Django注册表格和注册唯一电子邮件表格



我目前正在使用django registration v0.8a和django repatcha作为我的注册部分。除了我无法让RegistrationFormUniqueEmail正常工作之外,所有内容都很好,出现了repatcha字段。以下是一些细节。

我已经确保我的captcha\forms.py确实是从正确的形式进行子类化的:

from registration.forms import RegistrationFormUniqueEmail
class RegistrationFormCaptcha(RegistrationFormUniqueEmail):
captcha = ReCaptchaField(attrs={'theme': 'white'})

我还将form_class键放在了与处理调用的寄存器视图相关联的所有url中,例如:

url(r'^register/$',
          register,
          { 'form_class': RegistrationFormUniqueEmail,
                'backend': 'registration.backends.default.DefaultBackend' },
          name='registration_register'),

我注意到的一个奇怪的行为是,当我试图更改表格上的标签时,这些变化没有得到反映。也许这是同一个问题的一部分,因为我可能忽略了一些东西?

class RegistrationForm(forms.Form):
"""
Form for registering a new user account.
Validates that the requested username is not already in use, and
requires the password to be entered twice to catch typos.
Subclasses should feel free to add any additional validation they
need, but should avoid defining a ``save()`` method -- the actual
saving of collected user data is delegated to the active
registration backend.
"""
username = forms.RegexField(regex=r'^w+$',
                            max_length=30,
                            widget=forms.TextInput(attrs=attrs_dict),
                            label=_("Username"),
                            error_messages={ 'invalid': _("This value must contain only letters, numbers and underscores.") })
email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                           maxlength=75)),
                         label=_("Email address"))
password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict, render_value=False),
                            label=_("Password"))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict, render_value=False),
                            label=_("Password (again)"))

即,我将其中一个标签更改为另一个短语,这难道不应该反映出来吗?

感谢收看!

我使用的解决方案是使用RegistrationFormCaptcha和RegistrationFormUniqueEmail创建一个表单,并将其与url中的captcha后端一起使用。

custom_registration/forms.py

from captcha.forms import RegistrationFormCaptcha
from registration.forms import RegistrationFormUniqueEmail

class RegistrationFormUniqueEmailRecaptcha(RegistrationFormUniqueEmail, RegistrationFormCaptcha):
    pass

urls.py

from custom_registration.forms import RegistrationFormUniqueEmailRecaptcha
    ...
    url(r'^w/accounts/register/$',
        'registration.views.register',
        {'backend': 'captcha.backends.default.DefaultBackend',
         'form_class': RegistrationFormUniqueEmailRecaptcha}),
    ....

最新更新