使用没有命名空间的Apphook时的NoReverseMatch

时间:2014-05-22 14:26:30

标签: django-cms

我使用Django CMS 3和Django 1.6以及默认的django polls app,我正在做this简短教程。

我的问题是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 %}
...

但是当我删除&#34;民意调查时:&#34;部分来自index.html,它不会起作用(如果PollsApp中有或者不是app_name字段也没关系)我得到了这个错误:

  

/ polls /

的NoReverseMatch      

例外值:
  反转&#39;详细信息&#39;参数&#39;(1L,)&#39;和关键字参数&#39; {}&#39;未找到。尝试了0种模式:[]

当一切正常时,为什么我要努力工作 - 你问?这是因为我想使用不使用django-shop等名称空间的应用程序,当我为django-shop创建apphook时 - 出现了同样的问题。

1 个答案:

答案 0 :(得分:0)

当您通过CMS中的Apphook使用应用时,您必须在模板中创建网址时提供命名空间。

一般来说,在创建应用时,我相信它来自最佳实践&#39;始终命名您的应用和模板URL的方法。

如果您使用的是不使用app_name Meta属性的应用,则可以在根目录中包含应用的网址时定义命名空间{{ 1}}。看看这里的例子; https://docs.djangoproject.com/en/1.7/topics/http/urls/#reversing-namespaced-urls