我正在尝试使用以下方法将应用程序首页路由到应用程序服务:
<li><a href="{% url 'services.index' %}">Our Services</a></li>
服务应用程序:
用于服务应用程序的urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
视图
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
context = {}
return render(request, 'services/index.html', context)
该网站的urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('services/', include('services.urls'), name = 'services'),
path('home/', include('home.urls'), name = 'home'),
]
不幸的是,我收到错误消息:
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'services.index' not found. 'services.index' is not a valid view function or pattern name.
在settings.py中,我已在INSTALLED_APPS中设置了该应用程序,还为其设置了模板文件夹。
访问时
http://127.0.0.1:8000/services/
完全正常。
编辑:添加冒号而不是点:
<li><a href="{% url 'services:index' %}">Our Services</a></li>
它抛出了错误:
Exception Type: NoReverseMatch
Exception Value:
'services' is not a registered namespace
答案 0 :(得分:0)
首先,您需要设置urls.py主体:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('services/', include('services.urls', namespace = 'services')),
path('home/', include('home.urls', namespace = 'home')),
]
在这种情况下,只能通过命名空间更改名称 第二个是您的应用程序中的urls.py:
from django.urls import path
from services.views import index
urlpatterns = [
path('', index, name='index')
]
在您的模板上
<a href="{% url 'services:index' %}">My Index</a>