首页 > 解决方案 > 如何为 /check?id=984c3a7b-766b-450e 设计 URL 模式?

问题描述

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

标签: regexdjango

解决方案


不是路径的一部分,并且不能被 Django 的 URL 模式捕获。它是一个,它被一个对象[Django-doc]捕获。/check?id=984c3a7b-766b-450equerystringrequest.GETQueryDict

因此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 字典,除了一个键可以映射到多个值。


推荐阅读