如何解决django.urls.exceptions.NoReverseMatch:找不到'/'的反向字符 '/'不是有效的视图函数或模式名称
我正在尝试遵循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中找到反向解析网址的示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。