Django url 模式不是注册的视图函数或模式
Posted
技术标签:
【中文标题】Django url 模式不是注册的视图函数或模式【英文标题】:Django url pattern is not a registered view function or pattern 【发布时间】:2021-10-21 20:10:52 【问题描述】:我有一个小型 Django Web 应用程序,其中包含多个应用程序。我在 urls.py 文件中使用了包含,但每当我在 html 文件中引用 URLs 时,它们都不会加载。以下是我的 3 urls.py 文件。我遇到的问题具体是节点 urls.py
中的节点 url 模式#main urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('account/', include('account.urls')),
]
#account urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views
app_name = 'account'
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('dashboard/', views.dashboard, name='dashboard'),
path('nodes/', include('nodes.urls')),
]
#nodes urls.py
from django.urls import path
from . import views
app_name = 'nodes'
urlpatterns = [
path('', views.nodes, name='nodes'),
]
这是我引用 URL 模式的 HTML 文件:
<li % if section == 'nodes' %class="active"% endif %>
<a class="nav-link" href="% url 'nodes' %">Nodes</a>
</li>
【问题讨论】:
您可以尝试不使用“”括号。只需使用 Начало 你没有在主 urls 文件中包含你的节点 url @Henty 我该怎么做?我以为是因为帐户 urls.py 包含在主 urls.py 文件中,所以节点 urls.py 文件将被包含? 哦,是的,我错过了,抱歉,我认为它可能类似于 'account.nodes.nodes' 或更短的版本来称呼它 @Henty 我会把这个放在哪里? 【参考方案1】:由于您在urls file
中设置的此模式名称,如果将 HTML 文件更改为此必须修复:
<li % if section == 'nodes' %class="active"% endif %>
<a class="nav-link" href="% url 'account:nodes:nodes' %">Nodes</a>
</li>
仅供参考 :) 如果在 django shell 中导入 urls 文件并打印urlspatterns
的列表,您可以看到默认名称分配给您的nodes
路径。
【讨论】:
我是否还必须在 settings.py 中的 LOGIN_URL 属性中进行更改? @Morgan LOGIN_URL 只是使用login_required()
装饰器时重定向请求以登录的 URL 或命名 URL 模式,此设置变量与您使用的 Django reverse path
无关在 Django 模板标签中,但如果您使用命名 URL,这些名称必须相同。
@Morgan 我的回答没有解决您的问题吗?我在空的 Django 项目中测试了您的代码,并将路径正确地指向节点视图。如果您仍然有错误,请使用错误日志编辑您的问题
是的,谢谢@Erfan,我仍然遇到问题,但后来我发现了一行没有更改的html,现在它已修复。谢谢以上是关于Django url 模式不是注册的视图函数或模式的主要内容,如果未能解决你的问题,请参考以下文章
python 之 Django框架(路由系统include命名URL和URL反向解析命名空间模式)
NoReverseMatch:未找到“关于”的反向。 'about' 不是有效的视图函数或模式名称
反向找不到'password_reset_confirm'。 'password_reset_confirm'不是有效的视图函数或模式名称