首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中确认密码?

问如何在Django中确认密码?
EN

Stack Overflow用户
提问于 2015-11-28 09:31:44
回答 3查看 1.8K关注 0票数 0

我正在尝试使用PasswordInput()以一种安全的方式确认用户密码,但是Django似乎只允许每个表单使用一个PasswordInput()。实现以下confirm_password的最佳方式是什么:

代码语言:javascript
复制
class VerifyAccountsForm(forms.ModelForm):
    username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'}), label="")
    password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Password'}), label="")
    password_verify = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Verify password'}), label="")

    def clean_password(self):
        print self.cleaned_data
        password1 = self.cleaned_data.get('password')
        password2 = self.cleaned_data.get('password_verify')
        if not password2:
            raise forms.ValidationError("You must confirm your password")
        if password1 != password2:
        raise forms.ValidationError(_('Your passwords do not match'), code='invalid') 
        return password2

clean_data的输出只有用户名和密码,没有password_verify。

EN

回答 3

Stack Overflow用户

发布于 2015-11-28 11:42:00

如果你使用django自己的用户创建表单,你可以同时拥有两个字段,here is how I used it

form的clean_password2()函数比较两个密码输入并验证它们,以及returns the second password。

票数 0
EN

Stack Overflow用户

发布于 2015-11-28 17:45:38

我不知道为什么Django只允许每个表单输入一次密码。你想吃多少就吃多少,姜戈不会阻止你的。

请注意,您当前的代码在验证密码时被调用,但返回password_verify的值。

然而,如果你从cleaned_data得到了一些你不想要的东西,你应该发布clean方法的代码。

票数 0
EN

Stack Overflow用户

发布于 2018-10-19 16:20:36

在forms.py中将def clean_password(self):更改为def clean_password2(self):,并在HTML注册表单(registraton.html)中将{{ form.password2.errors.as_text }}写在密码输入字段的正上方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33966736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档