gpt4 book ai didi

python - Django clean_data.get ('obj' )方法返回无

转载 作者:行者123 更新时间:2023-11-28 20:59:16 26 4
gpt4 key购买 nike

我正在 django 中做一些密码确认表单。但我很困惑,因为 self.cleaned_data.get('confirm_password') 总是不返回任何内容,因此我的密码永远不会相互匹配。

这是 forms.py 中的 clean 方法

def clean_password(self):
password = self.cleaned_data.get("password")
confirm_password = self.cleaned_data.get("confirm_password")
if password != confirm_password:
print(password)
print(confirm_password)
raise forms.ValidationError(
"Password and password confirmation does not match"
)
return password

self.cleaned_data.get('password') 返回输入的密码,但confirm_password 不会返回。

view.py 中,当我在清理之前看到收到的数据时,confirm_password 显示为原样

......................user = UserRegister(request.POST)
print(request.POST.get('confirm_password'))

if user.is_valid():
print('valid')..........................

这可能是什么原因?

这是forms.py中的表单声明部分

first_name = forms.CharField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'First Name'}))
last_name = forms.CharField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'Last Name'}))
username = forms.CharField(required=True, widget=forms.widgets.TextInput(attrs={'placeholder': 'Username'}))
email = forms.EmailField( required=True, widget=forms.widgets.EmailInput(attrs={'placeholder': 'Email'}))
password =forms.CharField(required=True, widget=forms.widgets.PasswordInput())
confirm_password =forms.CharField(required=True, widget=forms.widgets.PasswordInput())

class Meta:
model=User
fields=['first_name','last_name','username','email','password','confirm_password']

最佳答案

clean_fieldname按字段声明顺序调用的方法,因此目前 clean_password称为 cleaned_data不包含confirm_password 。您可以在 clean_confirm_password 中执行此验证方法:

def clean_confirm_password(self):
password = self.cleaned_data.get("password")
confirm_password = self.cleaned_data.get("confirm_password")
if password != confirm_password:
print(password)
print(confirm_password)
raise forms.ValidationError(
"Password and password confirmation does not match"
)
return password

或者只使用clean需要访问多个表单字段的验证方法。

关于python - Django clean_data.get ('obj' )方法返回无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958248/

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