【发布时间】:2010-06-27 09:36:21
【问题描述】:
我想知道是否可以(特别是在 Django 中)拥有一个仅用于具有副作用的操作的 URL,该 URL 仅用于通过 POST 访问,并且用户基本上不可见。比方说,为了具体化,我的网站上有一个小消息系统,用户应该能够从他们的收件箱中执行以下操作:
- 删除消息
- 将邮件标记为已读
- 将邮件报告为垃圾邮件
所有这些都会导致页面刷新,但会返回到同一页面。我想知道如何围绕这个设计我的 URL 和视图。我看到(至少)两个选项,我不知道哪个更惯用。
选项 1)
每个操作都有一个单独的 URL 和视图。因此,/inbox/delete-message/ 映射到 views.delete_message,依此类推。在每个视图结束时,它会重定向回 /inbox/。
我喜欢用这个选项清楚地分开事物的方式。如果用户以某种方式发现自己向 /inbox/delete-message/ 发送了一个 GET 请求,那会出现一种奇怪的情况(我会抛出一个错误页面吗?默默地重定向它们?)。
选项 2)
对每个操作使用相同的 URL 和视图,并具有标识操作的 POST 参数。所以我会有一个相当长的收件箱视图,其中会有一堆 if 语句测试 request.POST['action'] == 'delete' 还是 request.POST['delete'] == 'true' 或其他什么.
我觉得这个选项不太干净,但我也觉得它更常见。
Djangonauts 更喜欢哪个?还是有比上述任何一个更好的选择?
【问题讨论】:
标签: python django url post django-views