![](/img/trans.png)
[英]Django REST Framework - NoReverseMatch when using reverse()
[英]NoReverseMatch exception when creating integration test for REST API with Python Django
我创建了一个 REST API,在 Django 中接受一个 POST 请求。 从 React 前端调用时,请求本身效果很好,API 本身应该没有问题。
我想为 API 创建集成测试。
我已经编写了以下测试,它基本上是从适用于我的 API 的Django 文档中复制/粘贴的:
from django.urls import reverse, path
from rest_framework import status
from rest_framework.test import APITestCase
class SendLoginEmailTest(APITestCase):
def test_post_withValidData_loginEmailIsSent(self):
url = reverse('api_private:send_login_email')
data = {'email': 'validemail@email.com', 'token': '4d4ca980-cb0c-425d-8d2c-7e38cb33f38e'}
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
我使用以下命令运行测试:
python3 manage.py test
测试失败,但出现以下异常:
django.urls.exceptions.NoReverseMatch: Reverse for 'send_login_email' not found. 'send_login_email' is not a valid view function or pattern name.
任何想法我做错了什么?
== 更新 ==
urls.py 的内容。
from django.urls import path
from server.api_private.views import SendLoginEmail, ValidateEmail, IsEmailValidated, ProjectSave
app_name = "api_private"
urlpatterns = [
path('send_login_email/', SendLoginEmail.as_view()),
path('validate_email/', ValidateEmail.as_view()),
path('is_email_validated/', IsEmailValidated.as_view()),
path('project_save/', ProjectSave.as_view())
]
您没有在网址中添加名称。 reverse
函数正在寻找名称。 将名称添加到要与reverse
功能一起使用的所有 URL。
urlpatterns = [
path('send_login_email/', SendLoginEmail.as_view(), name='send_logic_email'),
...,
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.