2017-06-13 44 views
0

我正在關注Django介紹性教程,並且我遇到了一個奇怪的錯誤。或者至少我認爲這是一個奇怪的錯誤。
我在part 3,這是寫更多的意見。盡我所能,我已經盡力了,接着寫了一封教程。Django URLConf沒有正確解決

/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 ?這是一個基本的正則表達式。 enter image description here

+0

嘗試使用/調查/ 1/ – digitake

回答

2

的問題是你的my_project/urls.pypolls後,你錯過了/,更改爲:

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 
] 
+0

你是我的英雄。我正在看錯地方。 –

0

您可以使用Django的APPEND_SLASH設置(見here對於文件)或修改URL模式,使/可選,例如像這樣:

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

+0

是否完全一樣的事情。 –