python - 更改密码后尝试重定向用户时,Django 抛出 302 错误
问题描述
我有一个view
处理用户密码更改的
@csrf_exempt
def change_password(request):
if request.method == "POST":
user_request = json.loads(request.body.decode('utf-8'))
try:
u = User.objects.get(username=user_request.get("user"))
u.set_password(user_request.get("password"))
u.save()
except Exception as e:
print(e)
return HttpResponse("Failure")
return HttpResponseRedirect('/')
这确实会更改用户的密码,因为下次如果我必须登录,我必须提供新密码。但它不会立即将用户重定向到主页(反过来又会重定向到登录页面,因为用户已注销)。
我对下面给出的登录有类似的看法
@csrf_exempt
def login_view(request):
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect('/')
else:
return render(request, "login.html")
else:
return render(request, "login.html")
但如果身份验证成功,它会将用户重定向到主页。
那么为什么当用户更改密码时不会发生任何重定向?我反而得到一个302
状态码。
解决方案
“302 Found”是重定向。它在 HTTP 响应中包含一个“Location”标头,告诉浏览器去哪里。
推荐阅读
- mongodb - 在 MongoDB 的几个嵌套字段中获取最后一个数组项
- wordpress - 如何使 Wordpress 缩略图网格大小相同
- kubernetes - 在 macOS 上重新安装后 kubernetes 超时
- node.js - 错误消息:InvalidKey:密钥应至少包含一种
- python - Python 无法推送到 Heroku
- docker - 使用 Docker 的多个 Teamcity 代理
- html - 使 div 在固定的父 div 中响应
- javascript - 如何获取firebase文件存储的下载Url
- javascript - 从它的 Html 字符串或转换的 jQuery 对象中查找 Ajax error.ResponseText 的标题/任何标记
- c - c printf %lf %d 不同的结果