gpt4 book ai didi

python - Django - 从 HttpResponse 对象检索 url?

转载 作者:行者123 更新时间:2023-12-05 07:30:25 26 4
gpt4 key购买 nike

在 Django 测试用例中,如何从 HttpResponse 对象获取 url?

如果我有以下 Django 应用程序:

urls.py
from django.urls import path
from . import views

urlpatterns = [
path('httpresponse/', views.http_response, name='http_response'),
]

View .py
from django.shortcuts import render

def http_response(request):
return render(request, template_name='home.html')

测试.py
from django.test import TestCase
from django.urls import reverse

http_response = reverse('http_response')

class TestTemplateResponse(TestCase):
def test_http_response(self):
response = self.client.get(http_response)
self.assertEqual(response.url, http_response)

单元测试失败并显示以下消息:

AttributeError: 'HttpResponse' 对象没有属性 'url'

有没有办法让客户端返回一个Response对象,而不是HttpResponse

最佳答案

从上面给出的代码和您的评论来看,如果用户通过身份验证,您将尝试将用户重定向到主页,这不匹配。在上面的代码中,如果有人正在访问 /httpresponse,那么您只是在呈现一个模板(返回 HttpResponse)。

HttpResponse 对象没有 url 属性。现在,如果您在编写的 View 中使用 login_required 装饰器,它会将 unauthenticated 用户重定向到登录页面。在这种情况下(redirect),返回一个 HttpResponseRedirect 实例,它确实具有 url 属性。

Django 源代码:https://github.com/django/django/blob/d6aff369ad33457ae2355b5b210faf1c4890ff35/django/http/response.py#L465

因此,要测试经过身份验证的用户在访问 singup 时是否被重定向到主页 View ,您应该首先为经过身份验证的用户设置重定向。然后您应该能够访问响应的 url 属性。

关于python - Django - 从 HttpResponse 对象检索 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52345592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com