Django根项目url命名空间不起作用

时间:2016-10-08 13:58:10

标签: django django-urls

我决定拥有主要目标网页和关于我的主页。页面等在我的项目的根目录而不是作为一个不同的应用程序。这意味着该项目如下所示:

/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),

问题是,当我尝试在我的模板中指向一个网址时,它的工作原理是:

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

但是,如果我尝试引用命名空间,那么:

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

我收到此错误:

NoReverseMatch at /
'Hello_World' is not a registered namespace

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

1 个答案:

答案 0 :(得分:1)

你引用的

urls.py在settings.py中设置为root url 它可能看起来像这样

ROOT_URLCONF = 'Hello_World.urls'.

您无法命名您的根网址,因为只有一个根网址。仅在存在多个应用时才会进行操作。

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

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

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

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

django的django错误说明命名空间不匹配beacuse它搜索其他应用程序urls.py文件的命名空间,因为它不匹配app_name ='Hello_World'否则显示错误。