NoReverseMatch-不是注册的名称空间

时间:2019-08-17 17:27:15

标签: python django

我是Django的新手,当时我在第一个项目中工作,但是我得到了:

  

具有异常值的NoReverseMatch:“ hiring_log_app”不是   在base.html中注册的名称空间

如下:

href="{% url 'hiring_log_app:index' %}" >Hiring Log

href="{% url 'hiring_log_app:topics' %}" >Topics

我确保我的命名空间正确,并且查看了已经打开的其他主题,而没有弄清楚如何解决该问题。

我粘贴urls.py:

from django.contrib import admin
from django.conf.urls import include, url

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include ('hiring_log_app.urls', namespace='hiring_log_app')),

hiring_log_app / urls.py:

"""Define URL patterns for hiring_log_app"""
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^topics/$', views.topics, name='topics'),
              ]

views.py:

from django.shortcuts import render    
from .models import Topic

def index(request):
    """The home page for hiring_log_app"""
    return render(request, 'hiring_log_app/index.html') 

def topics(request):
    """ list of topics"""
    topics = Topic.objects.raw( "SELECT text FROM HIRING_LOG_APP_TOPIC;")                                  
    context = {'topics' : topics}
    return render(request, 'hiring_log_app/topics.html', context)    

有人知道我在哪里犯错吗?

1 个答案:

答案 0 :(得分:0)

您在 urlpatterns 中错误地指定了名称空间。遵循以下模式:

from django.contrib import admin
from django.conf.urls import include, url
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include (('hiring_log_app.urls','hiring_log_app'), namespace='hiring_log_app'))

编辑:

如果您使用的是Django 2.2.4,则应使用 path 而不是 url ,因为它的用法已被re_path取代。

from django.contrib import admin
from django.conf.urls import include    
from django.urls import re_path

urlpatterns = [
    re_path(r'^admin/', include(admin.site.urls)),
    re_path(r'', include (('hiring_log_app.urls','hiring_log_app'), namespace='hiring_log_app'))