从约束选择传递参数到Django视图

4 投票
1 回答
1963 浏览
提问于 2025-04-17 02:59

我想找到一种最好的方法,从网址中传递两个参数中的一个到视图,而不允许传递其他额外的参数。

比如,下面这些网址:

(r'^friends/requests', 'app.views.pendingFriends'),

(r'^friends/offers', 'app.views.pendingFriends'),

如果能把网址传递给视图,这样 pendingFriends 就能知道是从哪个网址调用的,那就太好了。不过,我找不到这样做的方法。

相反,我可以在网址中提供参数(requestsoffers),给一个单独的 Django 视图,

(r'^friends/(?P<type>\w+', 'app.views.pendingFriends'),

这个参数会告诉 pendingFriends 该怎么做。不过,这样做就可能会让其他参数也被传递到网址中(除了 requestsoffers)。

理想情况下,我希望网址调度器能在无效参数传递到视图之前,阻止这种情况发生(通过返回404错误)。所以我想问的是(a)这是否是最好的方法,(b)有没有办法限制传递到视图中的参数只能是 requestsoffers

谢谢

1 个回答

8

记住,你可以使用正则表达式来匹配网址。你只需要写一个正则表达式,确保它只接受你想要的内容:

(r'^friends/(?P<type>requests|offers)', 'app.views.pendingFriends'),

如果你想列出两次,可以这样做:

(r'^friends/(?P<type>requests)', 'app.views.pendingFriends'),
(r'^friends/(?P<type>offers)', 'app.views.pendingFriends'),

撰写回答