如果任何字段无效,Django-registration会清除所有字段

时间:2011-05-01 15:11:56

标签: django django-registration

我使用django-registration创建了一个注册系统。我已经扩展了RegistrationFormTermsOfService,如下所示。一切正常,除非任何字段无效,刷新页面并清除所有字段,以便用户必须再次输入所有内容。这是django-registration的默认行为吗?我真的不想改变django注册码。反正有没有让这个工作,所以它留下填写用户目前输入的字段?

class UserCreationFormExtended(RegistrationFormTermsOfService):
    email = forms.EmailField(label=("Email"), help_text = "We'll send...")
    username = forms.RegexField(
        label='Username:',
        max_length=35,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 alphanumeric characters.')

    password1 = forms.RegexField(
        max_length=30,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 characters.')

    def __init__(self, *args, **kwargs):
        super(UserCreationFormExtended, self).__init__(*args,
        **kwargs)
        self.fields['email'].required = True

    class Meta:
        model = User
        fields = ('username', 'email')

1 个答案:

答案 0 :(得分:0)

Django-registration不会“刷新”表单,如果输入无效,则视图返回填充了发布数据的表单。

您是否将表单传递给注册视图?

你的url.py中有类似的内容吗?

url(r'^register/$', 'registration.views.register', {'form_class':UserCreationFormExtended}),

你定义的Meta类对我来说似乎没用,你真的需要吗? init也没用,因为你可以得到相同的结果:

email = forms.EmailField(label=("Email"), required= True, help_text = "We'll send...")

但代码较少。

希望有所帮助:)

相关问题