Django 异常未注册命名空间
Django Exceptions Unregistered Namespace
我收到以下错误:
“文件“C:\Users\odesm\anaconda3\envs\adb3\lib\site-packages\django\urls\base.py”,第 83 行,反向
raise NoReverseMatch("%s 不是注册的命名空间" % key)
django.urls.exceptions.NoReverseMatch: 'accounts' 不是注册的命名空间"
我查看了有关堆栈溢出的类似错误并尝试了他们的解决方案,但其中 none 似乎适用。我不明白在路径中指定名称空间时我以何种方式未能注册名称空间(include(namespace =“”))并且我已经包含 app_name="app_name" 在相应的 url.py 文件。
base.html(抛出错误的片段)
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:login' %}">Login</a>
</li>
urls.py(在站点管理器应用下)
app_name = 'sitemanager'
urlpatterns = [
path('', views.HomeView.as_view(), name='site-home'),
path('accounts/', include('accounts.urls', namespace='accounts')),
path('accounts/', include('django.contrib.auth.urls')),
]
urls.py(对于帐户应用程序)
app_name = 'accounts'
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
path('signup/', views.SignUpView.as_view(template_name='accounts/signup.html'), name='signup'),
path('edit/', views.UpdateProfileView.as_view(template_name='accounts/update_profile.html'), name='edit'),
path('<slug:username>/', views.ProfileView.as_view(template_name='accounts/profile.html'), name='profile')
]
对我来说,我似乎已经注册了正确的命名空间,但似乎我的逻辑某处有问题。
由于我的帐户应用程序 urls.py 包含在我的站点管理器应用程序 urls.py 中,因此我也需要通过站点管理器进行路由。
因此以下内容
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:login' %}">Login</a>
</li>
需要成为
<li class="nav-item">
<a class="nav-link" href="{% url 'sitemanager:accounts:login' %}">Login</a>
</li>
我收到以下错误: “文件“C:\Users\odesm\anaconda3\envs\adb3\lib\site-packages\django\urls\base.py”,第 83 行,反向 raise NoReverseMatch("%s 不是注册的命名空间" % key) django.urls.exceptions.NoReverseMatch: 'accounts' 不是注册的命名空间"
我查看了有关堆栈溢出的类似错误并尝试了他们的解决方案,但其中 none 似乎适用。我不明白在路径中指定名称空间时我以何种方式未能注册名称空间(include(namespace =“”))并且我已经包含 app_name="app_name" 在相应的 url.py 文件。
base.html(抛出错误的片段)
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:login' %}">Login</a>
</li>
urls.py(在站点管理器应用下)
app_name = 'sitemanager'
urlpatterns = [
path('', views.HomeView.as_view(), name='site-home'),
path('accounts/', include('accounts.urls', namespace='accounts')),
path('accounts/', include('django.contrib.auth.urls')),
]
urls.py(对于帐户应用程序)
app_name = 'accounts'
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
path('signup/', views.SignUpView.as_view(template_name='accounts/signup.html'), name='signup'),
path('edit/', views.UpdateProfileView.as_view(template_name='accounts/update_profile.html'), name='edit'),
path('<slug:username>/', views.ProfileView.as_view(template_name='accounts/profile.html'), name='profile')
]
对我来说,我似乎已经注册了正确的命名空间,但似乎我的逻辑某处有问题。
由于我的帐户应用程序 urls.py 包含在我的站点管理器应用程序 urls.py 中,因此我也需要通过站点管理器进行路由。
因此以下内容
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:login' %}">Login</a>
</li>
需要成为
<li class="nav-item">
<a class="nav-link" href="{% url 'sitemanager:accounts:login' %}">Login</a>
</li>