Django 根项目 url 命名空间不工作

Django root project url namespace not working

我决定将主要着陆页和 'about me' 页面等首页放在项目的根目录中,而不是作为不同的应用程序。这意味着项目看起来像这样:

/django-helloworld

  /Hello_World
    __init__.py
    url.py
    views.py
    wsgi.py

  /static
    style.css

  /templates
    index.html

我的 urls.py 看起来像这样:

from django.conf.urls import url, include
from django.contrib import admin

from . import views

app_name = 'Hello_World'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^admin/', admin.site.urls),

问题是,当我尝试在我的模板中指向 url 时,它会通过以下方式工作:

<a href="{% url 'index' %}">Home</a>

但是如果我尝试像这样引用命名空间:

<a href="{% url 'Hello_World:index' %}">Home</a>

我收到这个错误:

NoReverseMatch at /
'Hello_World' is not a registered namespace

我做错了什么?提前致谢。

urls.py 你指的是在你的 settings.py 中设置为 root url 大概长这样

ROOT_URLCONF = 'Hello_World.urls'.

你不能命名你的 root url 因为只能有一个 root url.Namesapcing 只有当存在多个应用程序时才会这样做。

相反,您可以提及 url 的名称并使用它。

Ex: <a href="{% url 'index' %}">Home</a> 

以上将适用于您所有的模板和所有没有命名空间的应用程序,因为 href 将首先尝试您项目的 urls.py 文件,它将匹配名称索引

url(r'^$', views.IndexView.as_view(), name='index'),.

Django 的原因 django 错误说名称空间不匹配因为它搜索其他应用程序 urls.py 名称空间的文件并且因为它不匹配 app_name= 'Hello_World' 否则错误是显示。