从约束选择传递参数到Django视图
我想找到一种最好的方法,从网址中传递两个参数中的一个到视图,而不允许传递其他额外的参数。
比如,下面这些网址:
(r'^friends/requests', 'app.views.pendingFriends'),
(r'^friends/offers', 'app.views.pendingFriends'),
如果能把网址传递给视图,这样 pendingFriends
就能知道是从哪个网址调用的,那就太好了。不过,我找不到这样做的方法。
相反,我可以在网址中提供参数(requests
或 offers
),给一个单独的 Django 视图,
(r'^friends/(?P<type>\w+', 'app.views.pendingFriends'),
这个参数会告诉 pendingFriends
该怎么做。不过,这样做就可能会让其他参数也被传递到网址中(除了 requests
和 offers
)。
理想情况下,我希望网址调度器能在无效参数传递到视图之前,阻止这种情况发生(通过返回404错误)。所以我想问的是(a)这是否是最好的方法,(b)有没有办法限制传递到视图中的参数只能是 requests
或 offers
?
谢谢
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'),