1

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

<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"' 的东西,那就完美了。但是没有。是否有一些优雅的模式可以实现我想要的?还是我在做一些非常愚蠢的事情而我只是不知道?

4

1 回答 1

1

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

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

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

于 2012-10-20T19:21:56.507 回答