首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django confirm_email和confirm_password返回None

Django confirm_email和confirm_password返回None
EN

Stack Overflow用户
提问于 2014-06-10 02:08:53
回答 1查看 106关注 0票数 0

我有一个看起来像这样的表单。

代码语言:javascript
复制
class MyForm(Form):
    first_name = forms.CharField(max_length=128,
                                 widget=forms.TextInput(attrs={
                                     'placeholder': 'First Name',
                                     'class': "form-control"}),)
    last_name = forms.CharField(max_length=128,
                                widget=forms.TextInput(attrs={
                                    'placeholder': 'Last Name',
                                    'class': "form-control"}),)

    email = forms.EmailField(max_length=128,
                             widget=forms.TextInput(attrs={
                                 'placeholder': 'Email',
                                 'class': "form-control"}),)

    confirm_email = forms.EmailField(max_length=128,
                                     widget=forms.TextInput(attrs={
                                         'placeholder': 'Confirm Email',
                                         'class': "form-control"}),)

    password = forms.CharField(max_length=128,
                               widget=forms.PasswordInput(attrs={
                                   'placeholder': 'Password',
                                   'class': "form-control"}),)

    confirm_password = forms.CharField(max_length=128,
                               widget=forms.PasswordInput(attrs={
                                   'placeholder': 'Confirm Password',
                                   'class': "form-control"}),)

    def clean_email(self):
        cleaned_data = super(MyForm, self).clean()
        email = cleaned_data.get('email')
        confirm_email = cleaned_data.get('confirm_email')

        if not confirm_email:
            raise forms.ValidationError("Please confirm your email.")

        if email and confirm_email:
            if email != confirm_email:
                raise forms.ValidationError("Emails do not match")
        return confirm_email

    def clean_password(self):
        cleaned_data = super(MyForm, self).clean()

        pwd = cleaned_data.get('password')
        cpwd = cleaned_data.get('confirm_password')

        if not cpwd:
            raise forms.ValidationError("Please Confirm your Password")
        if pwd and cpwd:
            if pwd != cpwd:
                raise forms.ValidationError("Passwords do not match.")  #CNone

        return cpwd

    def clean(self, *args, **kwargs):
        self.clean_email()
        self.clean_password()
        return super(MyForm, self).clean()

confirm_emailconfirm_passwor%d字段都返回None,这使得这些字段无法验证。我几乎不知道是什么导致了这个问题。

这是我的表单的问题,还是更可能是视图甚至模板的问题?

EN

回答 1

Stack Overflow用户

发布于 2014-06-10 02:54:35

代码语言:javascript
复制
class MyForm(Form):
    first_name = forms.CharField(
        max_length=128,
        widget=forms.TextInput(
            attrs={'placeholder': 'First Name','class': "form-control"}
        ),
    )
    last_name = forms.CharField(
        max_length=128,
        widget=forms.TextInput(
            attrs={'placeholder': 'Last Name', 'class': "form-control"}
        ),
    )

    email = forms.EmailField(
        max_length=128,                 
        widget=forms.TextInput(
            attrs={'placeholder': 'Email', 'class': "form-control"}
        ),
    )

    confirm_email = forms.EmailField(
        max_length=128,
        widget=forms.TextInput(
            attrs={'placeholder': 'Confirm Email', n'class': "form-control"}
        ),
    )

    password = forms.CharField(
        max_length=128,
        widget=forms.PasswordInput(
            attrs={'placeholder': 'Password', 'class': "form-control"}
        ),
    )

    confirm_password = forms.CharField(
        max_length=128,
        widget=forms.PasswordInput(
            attrs={'placeholder': 'Confirm Password', 'class': "form-control"}
        ),
    )

    def clean_email(self):
        cdata = self.cleaned_data

        email = cdata['email']
        confirm_email = cdata.['confirm_email']

        if email and confirm_email:
            if email != confirm_email:
                raise forms.ValidationError("Emails do not match")

        return email

    def clean_confirm_email(self):
        cdata = self.cleaned_data

        confirm_email = cdata['confirm_email']

        if not confirm_email:
            raise forms.ValidationError("Please confirm your email.")

        return confirm_email

    def clean_password(self):
        cdata = self.cleaned_data

        password = cdata['password']
        confirm_password = cdata['confirm_password']

        if password and confirm_password:
            raise forms.ValidationError("Passwords do not match.")  

        return password

    def clean_confirm_password(self):
        cdata = self.cleaned_data

        confirm_password = cdata['confirm_password']

        if not confirm_password:
            raise forms.ValidationError("Please Confirm your Password")

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

https://stackoverflow.com/questions/24126189

复制
相关文章

相似问题

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