繁体   English   中英

Django URLConf无法正确解析

[英]Django URLConf Not Resolving Properly

我正在遵循Django入门教程,并且遇到了一个奇怪的错误。 或者至少我认为这是一个奇怪的错误。
我在第3部分中 ,它将编写更多视图。 据我所知,我已经按照本教程进行操作。

我的/polls/urls.py文件如下所示:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
    url(r'^(?P<question_id>[0-9]+)/results/$', views.results, 
        name='results'),
    url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]

if __name__ == "__main__":
    pass

并且polls/views.py看起来像这样:

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")


def detail(request, question_id):
    return HttpResponse("You're looking at question {question}.".format(question=question_id))


def results(request, question_id):
    response = "You're looking at the results of question {question}.".format(question=question_id)
    return HttpResponse(response)


def vote(request, question_id):
    return HttpResponse("You're voting on question {question}.".format(question=question_id))


if __name__ == "__main__":
    pass

并且我已经在my_project/urls.py注册了网址:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls', include("polls.urls"))
]

如果我访问http://127.0.0.1:8000/polls ,则会看到我希望看到的“ hello world”消息,但是我尝试查找其中一个问题,即我访问了http://127.0.0.1:8000/polls/1/我看到以下错误消息:

Using the URLconf defined in learning_django.urls, Django tried these URL patterns,  
in this order:

1. ^admin/
2. ^polls ^$ [name='index']
3. ^polls ^(?P<question_id>[0-9]+)/$ [name='detail']
4. ^polls ^(?P<question_id>[0-9]+)/results/$ [name='results']
5. ^polls ^(?P<question_id>[0-9]+)/vote/$ [name='vote']

The current URL, polls/1/, didn't match any of these.

我的网址怎么可能不匹配数字3? 这是一个基本的正则表达式。 在此处输入图片说明

问题是您的my_project/urls.py ,在polls之后,您错过了/ ,更改为:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls/', include("polls.urls")) # add / after polls
]

您可以使用Django APPEND_SLASH设置(请参阅此处获取文档),也可以修改URL模式以将/设为可选,例如:

url(r'^(?P<question_id>[0-9]+)/?$', views.detail, name='detail'),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM