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' 否则错误是显示。
我决定将主要着陆页和 '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' 否则错误是显示。