You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework注册后重定向登录页遇Unsafe redirect报错解决方法

解决Django注册后重定向的"Unsafe redirect"错误

出现这个错误是因为HttpResponseRedirect接收的参数需要是具体的URL路径或完整URL,你直接传入命名URL别名accounts:login时,其中的冒号会被识别成协议前缀(类似http://),从而触发"Unsafe redirect"的安全校验错误。

可以用以下两种方法解决:

方法1:使用reverse解析命名URL

先导入reverse函数,将命名URL解析为正确的路径字符串后再传给HttpResponseRedirect:

from django.urls import reverse
from django.http import HttpResponseRedirect
from rest_framework.views import APIView

class RegisterUser(APIView):
    serializer_class = RegisterSerializer
    def post(self, request):
        serializer = self.serializer_class(data=request.POST)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return HttpResponseRedirect(reverse('accounts:login'))

方法2:使用redirect快捷函数

redirect是Django提供的快捷函数,内部已经处理了命名URL的解析逻辑,用法更简洁:

from django.shortcuts import redirect
from rest_framework.views import APIView

class RegisterUser(APIView):
    serializer_class = RegisterSerializer
    def post(self, request):
        serializer = self.serializer_class(data=request.POST)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return redirect('accounts:login')

这两种方法都能将命名URL别名转换为合法的URL路径,避免触发不安全重定向的错误。

内容的提问来源于stack exchange,提问作者h_python_1368

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:55:16