通过约束选择将参数传递给Django中的视图

时间:2011-09-24 11:28:17

标签: python django django-urls

我正在寻找将两个参数中的任何一个传递给URL中的视图的最佳方法,而不允许任何其他参数。

例如,使用以下网址:

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

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

如果可以将URL传递给视图,以便pendingFriends知道从哪个URL调用,那就可以了。但是,我看不到这样做的方法。

相反,我可以在URL中提供参数(requestsoffers)到单个Django视图,

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

该论点将告诉pendingFriends该怎么做。但是,这样就可以将其他参数传递给URL(requestsoffers除外。)

理想情况下,我希望URL调度程序在将无效参数传递给视图之前停止发生这种情况(通过404)。所以我的问题是(a)这是最好的方法,(b)有没有办法将传递给URL中的视图的参数约束到requestsoffers

由于

1 个答案:

答案 0 :(得分:7)

请记住,您可以充分利用正则表达式来匹配网址。你只需要编写一个只接受你想要的正则表达式:

(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'),