【问题标题】:Django root project url namespace not workingDjango根项目url命名空间不起作用
【发布时间】:2016-10-08 13:58:10
【问题描述】:

我决定将首页(例如主登录页面和“关于我”页面等)放在项目的根目录中,而不是作为不同的应用程序。这意味着项目看起来像这样:

/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

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

【问题讨论】:

  • 那是你的ROOT_URLCONF吗?
  • @knbk 你到底在说什么?在 settings.py 我有 ROOT_URLCONF = 'Hello_World.urls'

标签: django django-urls


【解决方案1】:
您所指的

urls.py 在您的 settings.py 中设置为根 url 大概是这样的

ROOT_URLCONF = 'Hello_World.urls'.

您不能命名您的根 url,因为只能有一个根 url。仅当存在多个应用程序时才进行命名。

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

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

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

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

原因 django for django 错误提示命名空间不匹配,因为它会搜索其他应用的 urls.py 文件以查找命名空间,并且因为它与 app_name= 'Hello_World' 不匹配,否则会显示错误。

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2019-02-01
    • 2018-05-25
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2015-12-16
    • 2018-02-06
    相关资源
    最近更新 更多