django.urls.exceptions.NoReverseMatch:找不到“/”的反向。“/”不是有效的视图函数或模式名称

Pra*_*ush 1 python django selenium unit-testing django-tests

我正在尝试遵循 Python TDD O'Reilly。

我知道他们使用的 django 版本是旧版本,但是,即使在进行了所有可能的修改之后,我仍然收到此错误。

我的 urls.py 文件:

超级列表.urls.py

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


urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('lists.urls')),
]
Run Code Online (Sandbox Code Playgroud)

列表.urls.py


urlpatterns = [
    path('/', home_page)
]
Run Code Online (Sandbox Code Playgroud)

列表.views.py

from django.shortcuts import (render, HttpResponse)
from rest_framework.decorators import api_view
# Create your views here.

@api_view()
def home_page(request):
    return HttpResponse('Response')
Run Code Online (Sandbox Code Playgroud)

列表.tests.py

from django.test import TestCase
from .views import home_page #


class HomePageTest(TestCase):
    def test_root_url_resolves_to_home_page_view(self):
        found = reverse('/') 
        self.assertEqual(found.func, home_page)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我尝试搜索这个问题很长时间,但没有成功。

小智 5

reverse函数的使用方式如下(Django 文档)

\n
 reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None)\xc2\xb6\n
Run Code Online (Sandbox Code Playgroud)\n

“viewname 可以是 URL 模式名称或可调用视图对象”

\n

您正在尝试使用链接到视图的 URL 路径来引用该视图。您实际需要做的是将 URL 模式名称添加到您的path调用中,并引用它。所以你可以使用:

\n
path(\'/\', home_page, name=\'home\')\n
Run Code Online (Sandbox Code Playgroud)\n

进而

\n
found = reverse(\'home\') \n
Run Code Online (Sandbox Code Playgroud)\n

此外,该reverse函数返回链接到您的视图的 URL 路径,而不是实际的视图。所以你的.assertEqual测试仍然会失败。您可能会发现Django 文档中的 URL 反向解析示例很有帮助。

\n