gpt4 book ai didi

django - 在 views.py 之外访问 request.user

转载 作者:行者123 更新时间:2023-12-02 02:12:34 25 4
gpt4 key购买 nike

我有一个文件 forms.py,我在其中定义了所有表单。我需要对我的表单字段之一进行密码验证。

在我的forms.py中

class ChangePasswordForm(forms.Form):
old_password = forms.CharField(widget=forms.PasswordInput)
new_password= forms.CharField(widget=forms.PasswordInput)
new_password_again= forms.CharField(widget=forms.PasswordInput)

def clean_old_password(self):
data = self.cleaned_data['old_password']
if data != currently_logged_in_user.password:
raise forms.ValidationError("Password Incorrect")

return data

我需要访问当前登录的用户,以便我可以使用 current_logged_in_user.password 进行验证,但我目前正在使用 forms.py 而不是 views.py 所以我不知道该怎么做?请帮忙

最佳答案

您需要将用户从 View 传递到您的表单。你可以这样做:

View .py

my_form = ChangePasswordForm(user=request.user, data=request.POST)
...

表单.py

class ChangePasswordForm(forms.Form):
...

def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user', None)
super(ChangePasswordForm, self).__init__(*args, **kwargs)

def clean_old_password(self):
old_password = self.cleaned_data['old_password']
if not self.user.check_password(old_password)
raise forms.ValidationError("Password Incorrect")
return old_password

关于django - 在 views.py 之外访问 request.user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12093151/

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