如何为/ check?id = 984c3a7b-766b-450e设计URL模式?

时间:2018-09-20 18:19:45

标签: regex django

我不知道如何在Django中为/check?id=984c3a7b-766b-450e? url设计一个正则表达式。我尝试了r'^check\?id=(?P<id>[0-9a-f-]+)/$',但它返回“找不到页面”。不过,仅与(?P<id>[0-9a-f-]+)一起使用效果很好。

1 个答案:

答案 0 :(得分:3)

/check?id=984c3a7b-766b-450e是路径的 not 部分,不能由Django的URL模式捕获。它是querystring,由QueryDict对象request.GET [Django-doc]捕获。

urlpatterns如下所示:

# app/urls.py

from app.views import some_view
from django.urls import url

urlpatters = [
    url(r'^check$', some_view),
    # ...
]

,然后在视图中,可以使用以下命令获取与id键对应的值:

# app/views.py

def some_view(request):
    my_id = request.GET['id']
    # ...
    # return a HttpResponse

request.GET的行为或多或少类似于普通的Python字典,不同之处在于键可以映射到多个值。