urlconfig-它采用默认参数,而不是传递参数

时间:2019-06-20 17:09:09

标签: django django-models django-templates django-views

如果我通过http://127.0.0.1:8000/call/?p=3并在view.page中打印num,则会打印1

#urls.py
urlpatterns = [
    path('call/',views.call),
    path('call/page<int:num>/',views.call),
]

if I pass 127.0.0.1:8000/call/?p=3 and it prints num 1 and not 3.

# View (in blog/views.py)
def page(request, num=1):
  print(num)   // 1

1 个答案:

答案 0 :(得分:1)

?p=3部分是querystring [wiki],而不是 path 。这些参数存储在request.GET [Django-doc](类似于字典的对象)中,不同之处在于键可以映射到多个参数。

因此只有一个路径:

urlpatterns = [
    path('call/',views.call),
]

然后使用QueryDict.get(..) [Django-doc]来获取它,我们可以在其中提供一个 default 参数:

def page(request):
  print(request.GET.get('p', 1))

如果您指定:

urlpatterns = [
    path('call/',views.call),
    path('call/page<int:num>/',views.call),
]

然后触发第二条路径的URL是127.0.0.1:8000/call/page3