作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Django 实现更改密码功能,但它不起作用。似乎它总是在不进入 form_valid 语句的情况下呈现一个新表单,也不提供任何错误信息。
这是我的 views.py 中的代码
def password_reset_by_user(request):
if request.method == 'POST':
form = PasswordChangeForm(user=request.user, data=request.POST)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
return render(request, 'check_success.html')
else:
form = PasswordChangeForm(user=request.user)
context = {'form': form, }
return render(request, 'user/reset_by_user.html', context)
我想知道我做错了什么,请帮助我。谢谢
最佳答案
您需要确保在密码更改后重定向,并且在调用 View 之前存在有效的用户 session 。
试试这个版本:
from django.contrib.shortcuts import redirect
from django.contrib.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
@login_required
def password_reset_by_user(request):
form = PasswordChangeForm(user=request.user data=request.POST or None)
if form.is_valid():
form.save()
update_session_auth_hash(request, form.user)
return redirect('/')
return render(request, 'users/reset_by_user.html', {'form': form})
您还可以使用内置的 PasswordChangeView
,然后传递您的自定义模板:
from django.contrib.auth.views import PasswordChangeView
class PasswordResetByUser(PasswordChangeView):
template_name = 'users/reset_by_user.html'
success_url = '/'
关于python - view.py 中的 Django PasswordChangeForm 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699997/
我最近通过继承抽象用户实现了我自己的用户模型。 class NewUserModel(AbstractUser): 在我这样做之后 PasswordChangeForm停止工作。我在 UserCrea
我正在尝试使用 Django 实现更改密码功能,但它不起作用。似乎它总是在不进入 form_valid 语句的情况下呈现一个新表单,也不提供任何错误信息。 这是我的 views.py 中的代码 def
尝试在 Django 中访问我的 PasswordChangeView 时出现类型错误。错误是: Django Version: 1.7.3 Exception Type: TypeError Exc
我是一名优秀的程序员,十分优秀!