2014-05-22 130 views
5

使用Apphook當我使用Django CMS 3和Django的1.6,默認django polls app,和我做this簡短的教程。NoReverseMatch沒有命名空間

我的問題是,PollsApp時,它的使用這樣的命名空間正常工作:

djangocms_polls/cms_app.py:

... 
class PollsApp(CMSApp): 
    name = _("Poll App") 
    urls = ["polls.urls"] 
    app_name = "polls" 
... 

調查/模板/調查/ index.html的:

... 
{% for poll in latest_poll_list %} 
    <li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li> 
{% endfor %} 
... 

但是當我刪除「民意調查:」在index.html的一部分,它瓦特on't工作(這並不重要,如果沒有或不APP_NAME領域PollsApp),我得到這個錯誤:

NoReverseMatch at /polls/

Exception Value:
Reverse for 'detail' with arguments '(1L,)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

爲什麼我讓我的生活困難的時候一切正常 - 你問?這是因爲我想使用不使用像django-shop這樣的命名空間的應用程序,並且當我爲django-shop創建apphook時 - 出現了同樣的問題。

+1

我認爲這是本教程中的一個錯誤。看看這個https://github.com/divio/django-cms-tutorial/issues/35 – azuax

回答

0

當您通過CMS中的Apphook使用應用程序時,您必須提供在模板中創建URL時的命名空間。

一般來說此外,在創建應用程序時,我相信這是從「最佳實踐」的方法來始終命名空間您的應用程序和模板的URL。

如果您使用的應用程序未使用app_name Meta屬性,則可以在將根目錄中的應用程序的URL包含在內時定義名稱空間urls.py。看看這裏的例子; https://docs.djangoproject.com/en/1.7/topics/http/urls/#reversing-namespaced-urls

相關問題