如何将两个参数传递给url(没有GET)?

时间:2012-07-08 19:29:58

标签: python django django-urls

前一段时间我得到了建议,在使用Django时不要在我的网址中使用GET方法,因为它更干净。

使用一个参数非常好:

(r'^call/add/(?P<call_id>\d+)/$', call_view),

http://127.0.0.1:8000/call/add/1/

但我怎么可能用两个参数使用相同的方法呢?

在我还在学习的时候,请告诉我更好的方法。谢谢。

3 个答案:

答案 0 :(得分:3)

你根本无法像http://127.0.0.1:8000/call/add/1/foo/2那样在背面添加另一个。您必须将第二个参数添加到正则表达式中,例如(r'^call/add/(?P<call_id>\d+)/foo/(?P<foo_id>\d+)$', call_view),

您还必须更改控制器:def call_view(request, call_id, foo_id):

答案 1 :(得分:2)

您可以按如下方式指定多个参数:

(r'^call/add/(?P<call_id>\d+)/(?P<other_value>\d+)/$', call_view),

你的观点应该是这样的:

def call_view(request, call_id, other_value):
    # view code here

答案 2 :(得分:2)

(r'^call/add/(?P<call_id>\d+)/(?P<receiver_id>\d+)/$', call_view),

http://127.0.0.1:8000/call/add/1/903256

,您需要在views.py

中添加def call_view(request, call_id, receiver_id):

或者您可以w+代替d+来传递字符串变量

(r'^call/add/(?P<call_id>\d+)/(?P<receiver_name>\w+)/$', call_view),

http://127.0.0.1:8000/call/add/1/Kave

了解更多信息:https://docs.djangoproject.com/en/dev/topics/http/urls/