[英]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.
问题是您的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.