【问题标题】:How to be RESTful with Django without using form?如何在不使用表单的情况下使用 Django 实现 RESTful?
【发布时间】:2012-10-20 17:29:45
【问题描述】:

我的页面以三个按钮告终:结帐按钮、更改数量按钮和取消按钮:

<button name="checkout" onclick="location.href='/checkout/'"    >checkout  </button>
<button name="change"   onclick="location.href='/change-qty/'"  >change qty</button>
<button name="cancel"   onclick="location.href='/cancel-order/'">cancel    </button>

我以这种方式进行这些重定向,而不是使用表单,因为我希望每个按钮都重定向到不同的 Django 视图。上面的代码工作正常,但不是 RESTful:“checkout”和“cancel-order”改变了系统的状态,所以我希望这些是 POST。

我可以通过让“结帐”和“取消”视图将专用表单自动发布到两个接受 POST 的新视图来实现这一点。但这太麻烦了,也增加了复杂性。我还可以在页面中添加一些 jQuery,并让这些按钮中的每一个在指向相应视图的隐藏表单上触发 POST,并实现相同的目的。但是,对于看起来很简单的事情,这也是一大堆额外的代码。

真的,如果按钮上有类似 'method="post"' 的东西,那就完美了。但是没有。是否有一些优雅的模式可以实现我想要的?还是我在做一些非常愚蠢的事情而我只是不知道?

【问题讨论】:

    标签: django forms rest


    【解决方案1】:

    使用jquery-ujs,并为您的链接添加“data-”属性:

    <a href="/change-qty/" data-method="post">change qty</a>
    

    等等。不显眼的 JavaScript 会将正确的代码注入您的链接/按钮/任何内容。

    【讨论】:

    • 完美!而且很简洁!非常感谢。
    猜你喜欢
    • 2016-11-16
    • 1970-01-01
    • 2012-06-18
    • 2018-11-13
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多