【问题标题】:Django tutorial part 3: adding "namespacing" change breaks itDjango 教程第 3 部分:添加“命名空间”更改会破坏它
【发布时间】:2016-03-26 11:15:58
【问题描述】:

django 1.9 tutorial 的第 3 部分涵盖了很多内容。当我开始使用“命名空间 URL 名称”时 并添加到“polls/urls.py”

...
app_name = 'polls'
...

并更新了“polls/index.html” 使用新的命名空间网址:

{% if latest_question_list %}
    <ul>
    {% for question in latest_question_list %}
        <li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

并运行它,我现在得到错误: "u'polls' 不是注册的命名空间"

我是否在其他地方错过了另一行来注册命名空间?其他人有这个问题吗?在解决问题之前,我不想跳到下一章!

【问题讨论】:

  • 除非只有一个 django 教程,否则最好编辑您的问题以包含指向您正在学习的教程第 3 部分的链接。
  • 第一句中添加了超链接!
  • 你有哪个版本的Django?因为本教程适用于 v1.9,它不适用于以前的版本。要检查您的 Django 版本,请在 Python shell 中执行此操作:import django,然后是 django.get_version()
  • 是的,我的版本有误。本教程不喜欢 django v1.8.4。

标签: python django namespaces


【解决方案1】:

我是个白痴。我正在运行 django 1.8.4。使用 pip --upgrade 现在它在 1.9 版中运行得像明星一样。 它只是显示了我多久以前开始尝试学习这些东西。感谢您的帮助。

【讨论】:

    【解决方案2】:

    检查您的项目的 urls.py(不是 Polls 应用程序,而是“mysite”项目——在 settings.py 所在的同一目录中)。在从投票应用程序导入 URL 的那一行,也包括命名空间。

    url(r'^polls/', include('polls.urls', namespace="polls")
    

    【讨论】:

    • 其实 OP 就是这样做的,works for v1.9。尽管您的答案是正确的,但它并没有说明为什么它不适用于 OP。
    • 哇。感谢您提供解释 1.9 和以前版本之间差异的链接。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2017-08-21
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多