首页 > 解决方案 > NoReverseMatch at 不是注册的命名空间

问题描述

我看到有很多这个错误的例子,但我不知道为什么我的代码不起作用。我正在使用 Django 3.0.3,但NoReverseMatch at /browse/ 'browse' is not a registered namespace在我的browse应用程序中出现错误。在我看来,我拥有所需的一切,是否需要添加对browse其他地方的引用?

视图.py:

from django.urls import path                              
                                                          
from . import views                                       
                                                          
urlpatterns = [                                           
        path('', views.index, name='index'),              
        path('register', views.register, name='register'),
        ]   

网址.py:

 from django.http import HttpResponse              
 from django.shortcuts import render               
                                                   
 # Create your views here.                         
                                                   
 def index(request):                               
     return render(request, "browse/index.html")   
                                                   
 def register(request):                            
     return render(request, "browse/register.html")
                                             

布局.html:

<a class="dropdown-item" href="{% url 'browse:register' %}">Register</a>

项目范围的 urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('browse/', include('browse.urls')),
]

标签: django

解决方案


删除browse你可以直接这样做

<a class="dropdown-item" href="{% url 'register' %}">Register</a>

如果你想像这样使用它

<a class="dropdown-item" href="{% url 'browse:register' %}">Register</a>

然后你必须添加app_name = 'browse'urls.py

app_name = 'browse'
urlpatterns = [                                           
        path('', views.index, name='index'),              
        path('register', views.register, name='register'),
        ] 

推荐阅读