仅测试我的应用程序是否可以在用户未登录的情况下重定向到登录页面。URL/confirmation/TEST01,其中TEST01是反向URL。它应该重定向到/accounts/login/?next=/confirmation/TEST01

但我收到一个错误:

AssertionError: 404 != 302 : Response didn't redirect as expected: Response code was 404 (expected 302)

测试文件

def test_redirect_to_login(self):
    response = self.client.get('/confirmation/TEST01/')
    self.assertRedirects(response, '/accounts/login/?next=/confirmation/TEST01', status_code=302, target_status_code=404, fetch_redirect_response=True)


终奌站

[30/Apr/2019 08:45:01] "GET /confirmation/XZC456 HTTP/1.1" 302 0
Not Found: /accounts/login/
[30/Apr/2019 08:45:01] "GET /accounts/login/?next=/confirmation/XZC456 HTTP/1.1" 404 2386

最佳答案

使用login_redirect装饰器。

from django.contrib.auth.decorators import login_redirect

@login_redirect
def my_view(request):

10-06 05:30