问题描述
我正在尝试遵循Python TDD O'Reilly。
我知道他们使用的django版本是旧版本,但是,即使进行了所有可能的修改,我仍然收到此错误。
我的urls.py文件:
superlist.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')),]
lists.urls.py
urlpatterns = [
path('/',home_page)
]
lists.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')
lists.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)
解决方法
reverse
函数is used like this (Django docs):
reverse(viewname,urlconf=None,args=None,kwargs=None,current_app=None)¶
“视图名称可以是URL模式名称或可调用的视图对象”
您正试图通过使用链接到该视图的URL路径来引用该视图。您实际上需要做的是在您的path
调用中添加一个URL模式名称,并引用它。因此,您可以使用:
path('/',home_page,name='home')
然后
found = reverse('home')
此外,reverse
函数返回链接到您的视图而不是实际视图的URL路径。因此,您的.assertEqual
测试仍将失败。您可能会在Django docs中找到反向解析网址的示例。