我不知道這個SO question是否與我即將描述的問題相同,但它的確有共同的症狀。不幸的是,我寫作時仍然沒有解決。{%url%}給了我NoReverseMatch錯誤,而reverse()返回了這個url就好了。爲什麼?
所以這是我的問題。我正在嘗試將James Bennett的django-registration app添加到我的django項目中。我幾乎完成了配置,以滿足我的需求 - 自定義模板和網址。就在我認爲一切都很好的時候。我在使用{% url 'testing' item_id=123 %}
(我也嘗試使用視圖名稱,myapp.views.test
,而不是運氣)嘗試django-registration所需的一個自定義模板時出現了NoReverseMatch
錯誤。有趣的是,我在shell中嘗試了reverse('testing', kwargs={'item_id':123})
,並且返回的網頁很好。我認爲{% url %}
在後端使用reverse()
,但爲什麼我得到不同的結果?
urls.py:(我的網站的URL配置)
urlpatterns = patterns('myapp.views',
url(r'^test/(?P<item_id>\d+)/$', 'test', name='testing'),
)
activation_email.txt:(上述模板注意這是故意在.TXT擴展所要求的Django的登記這應該不是問題的原因。)
{% comment %}Used to generate the body of the activation email.{% endcomment %}
Welcome to {{ site }}! Please activate your account by clicking on the following link:
{% url 'testing' item_id=123 %}
Note the activation link/code will be expired in {{ expiration_days }} days.
我不知道它是否重要,但只是想我應該提到activation_email.txt存儲在模板目錄中myapp
儘管它被django-registration
使用。
此外,我使用Django 1.4
我有一種感覺,這個問題有事情做與URL命名空間,我從來沒有了解的話題,但它只是一個天真的猜測。 (國際海事組織,Django文檔很好地解釋了關於Django的一切,除了涉及到url命名空間時)
有趣〜的作品!非常感謝。但是這背後的理由是什麼?我的意思是django文檔中所有'{%url%}'的例子都使用了引號。 – tamakisquare 2012-04-27 23:41:47
檢查文檔中指定的url部分:https://docs.djangoproject.com/en/dev/topics/http/urls/#naming-url-patterns據我所知,如果您使用url標記一個到視圖的實際路徑,那麼你需要引號。如果使用名字,你不會。 – John 2012-04-27 23:46:32
感謝您的參考。在模板標籤文檔中,有一個示例'{%url'myapp:view-name'%}',所以我認爲qoutes是使用視圖名稱所必需的。我想這隻適用於當我使用視圖名稱和名稱空間一起時,這有點令人困惑。 – tamakisquare 2012-04-27 23:51:03