无法从一个应用链接到另一个

时间:2018-11-12 16:30:19

标签: django

我正在尝试使用以下方法将应用程序首页路由到应用程序服务:

<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

1 个答案:

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