我怎么知道何时以及何时不在 django url 标签中包含'app_name:'



我正在按照一本书中的说明编写我的第一个 django 程序。这本书写了像{% url 'learning_logs:index' %}这样的url标签(learning_logs是应用程序名称(,但是当我试图模仿它时,我得到了一个错误,直到我在这里阅读了一篇文章后才{% url 'index' %}。后来在我的程序中,在我在同一项目上创建了另一个名为"users"的应用程序后,我得到了错误Reverse for '' not found. '' is not a valid view function or pattern name,直到我恢复到书中使用的初始方法,在页面名称{% url 'learning_logs:index' %}之前添加"learning_logs:"。我需要一些关于如何识别何时添加"name_of_the_app:"以及何时不将其添加到 url 标签中的帮助。

下面是一些包含"learning_logs:"的代码示例:

<h1>
<a href="{% url 'learning_logs:index' %}">Learning Log</a> - 
<a href="{% url 'learning_logs:topics' %}">Topics</a> -
{% if user.is_authenticated %}
Hello, {{ user.username }}
{% else %}
<a href="{% url 'users:login' %}">log in</a>
{% endif %}
</h1>
{% block content %}{% endblock content %}

这是我只用 url 名称编写它的方式,有时也有效(这是在我创建新应用程序"用户"之前:

<h1>
<a href="{% url 'index' %}">Learning Log</a> - 
<a href="{% url 'topics' %}">Topics</a> -
</h1>
{% block content %}{% endblock content %}

在函数 include(用于包含应用程序的新 urls.py(urls.py中具有定义应用程序 URL 命名空间的 kwargnamespace,这就是您正在寻找的。这样做的主要原因是不要在应用程序之间发生太常见的URL,例如"列表"或"创建"。因此,如果您不定义命名空间,则可以只使用 url 的名称,而无需之前namespace:

文档在这里: https://docs.djangoproject.com/en/3.0/topics/http/urls/#url-namespaces

希望你能理解。

相关内容

  • 没有找到相关文章

最新更新