python - 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="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>
推荐阅读
- arrays - 如果该字符串是由 sed 命令插入的,则 awk 会在字符串匹配时产生误报
- android - React Native - 当应用程序不在后台(Android,iOS)时,深度链接不起作用
- python - 检查生成的矩阵是否已经存在
- java - FileInputStream 和 FileOutputStream 如何保持内部状态?
- python - QuantLib 的 HestonModelHelper 类抛出错误
- sql - 如何解决 ORA-00979 不是 GROUP BY 表达式
- core-data - 检测/接收 CloudKit CoreData 错误
- mysql - mysql导入自引用表跳过记录
- android - 如何使 Slider 在 Android 上运行?
- java - 即使已经设置了对应的 ObjectOutputStream,ObjectInputStream 构造函数也会挂起