2012-09-16 177 views
1

我想完成一個Django教程(https://docs.djangoproject.com/en/dev/intro/tutorial03/),並遇到了一個問題,我認爲,這是我的理解正則表達式和include()函數。Django管理員urlpatterns問題

我的問題urls.py:

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

admin.autodiscover() 

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

其中,導致我(在瀏覽到http://localhost:8000/admin/)到polls.urls的詳細視圖 - 該代碼是:

from django.conf.urls import patterns, url 

urlpatterns = patterns('polls.views', 
    url(r'^$', 'index'), 
    url(r'^(?P<poll_id>\d+)/$', 'detail'), 
    url(r'^(?P<poll_id>\d+)/results/$', 'results'), 
    url(r'^(?P<poll_id>\d+)/vote/$', 'vote'), 
) 

我得到爲什麼它與民意調查相匹配,並通過polls.urls。有任何想法嗎?

注:當我註釋掉url(r'^polls/, include('polls.urls')),線,我可以看到管理頁面再次

謝謝!

+0

你可以從url(r'^ polls /',include('polls.urls')),?這是正則表達式匹配的問題。 – karthikr

+0

不怕 - 我認爲這是正則表達式匹配的問題,但該網址是必需的。我只是不明白爲什麼它不匹配'r'^ admin /''當第二個'includes'在那裏,但是當它不是。 –

+0

對不起,只是爲了澄清(/糾正自己),'url'似乎並不需要,但它的刪除,同時仍然讓我看到我的民意調查頁面,不會讓我看到我的管理頁面。 –

回答

1

O.K - 所以我設法解決這個問題,但我不完全確定如何。這是一個離開它並處理其他問題的案例,當我回來時它已經修復了!所以,事情我改變:

1)包括{% load url from future %},以確保我的模板

2)前向兼容改變了detail.html表單動作從<form action="{% url 'polls.views.vote' poll.id %}" method="post">

3)以<form action="/polls/{{ poll.id }}/vote/" method="post">(最後,也許最重要的是 - 將我的語法排序!在我的views.py文件中,我有Return HttpResponseRedirect(reverse('polls_results', args=(p.id,)))而不是Return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))

我仍然不知道哪個是做的,但是如果有人和我處於同一個位置,那麼這三個組合就可以做到!