Django异常未注册的命名空间



我收到以下错误:"文件";C: \Users\odesm\anaconda3\envs\adb3\lib\site-packages\django\urls\base.py",线路83,反向引发NoReverseMatch("%s不是已注册的命名空间"%key(django.urls.exceptions.NoReverseMatch:"accounts"不是已注册的命名空间">

我已经查看了关于堆栈溢出的类似错误,并尝试了他们的解决方案,但似乎都不适用。我不明白当在路径中指定了名称空间(include(namespace="((并且我包含了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中,所以我也需要通过网站管理员进行路由。

Ergo以下

<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>

最新更新