gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:09:41 24 4
gpt4 key购买 nike

我使用 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 %}
...
但是,当我从 index.html 中删除“polls:”部分时,它将不起作用(并且 PollsApp 中是否存在 app_name 字段都没有关系)并且我收到此错误:

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 时 - 发生了同样的问题。

最佳答案

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

总的来说,在创建应用程序时,我相信它是一种“最佳实践”方法,始终为您的应用程序和模板 URL 命名。

如果您使用的应用程序不使用 app_name Meta 属性,当您在根目录中包含应用程序的 URL 时,您可以定义命名空间 urls.py .看看这里的例子; https://docs.djangoproject.com/en/1.7/topics/http/urls/#reversing-namespaced-urls

关于django-cms - 使用没有命名空间的 Apphook 时 NoReverseMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23809663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com