Django V2.1反向不是有效的视图函数或模式名称

时间:2018-09-17 13:12:19

标签: python django

我对Django非常陌生,我在项目中创建了两个应用程序,一个是登录 server_status 。我已经使用命名空间方法在两个应用程序之间访问我的登录名和server_status。当我尝试访问索引时,它工作正常,但是当我尝试访问dashboard中的server_status时,它不起作用。

Reverse for 'server_status' not found. 'server_status' is not a valid view function or pattern name

# server_status URL

from django.urls import path
from . import views

    urlpatterns = [
path('', include('server_status.urls', namespace='server_status')),
path('', include('login.urls', namespace='login')),
path('admin/', admin.site.urls),
]

# login app URL

app_name = 'login'

urlpatterns = [
    path('login', views.index, name='index')
]


# project URL

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

    app_name = 'server_status'

urlpatterns = [
    path('', views.index, name='index'),
    path('dashboard/', views.dashboard, name='dashboard'),
    path('server_status/', views.server_status, name='server_status'),
    path('request_access/', views.request_access, name='request_access'),
]

server_status / templates / server_status / index.html

<a href="{% url 'server_status:dashboard' %}" class="button primary centered-s">Login</a>

我知道这很简单,但是这让我非常复杂。

2 个答案:

答案 0 :(得分:1)

在发布的代码中,您两次定义了urlpatterns,因此第一组urlpatterns被第一个覆盖。由于server_status是在第一组中定义的,因此它不存在于内存中,因为在第二个定义中已将其删除。 index是唯一可以保留的模式。我认为您要在第二个节中执行的操作是使用以下命令 add 到urlpatterns中:

urlpatterns += [...]

答案 1 :(得分:0)

要声明名称空间,您应该执行以下操作:

# project URL

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

urlpatterns = [
    path('', include('server_status.urls', namespace='server_status')),
    path('', include('login.urls', namespace='login')),
    path('admin/', admin.site.urls),
]

然后您可以使用

<a href="{% url 'login:index' %}" class="button primary centered-s">Login</a>

<a href="{% url 'server_status:index' %}" class="button primary centered-s">Server status index</a>