无法将自定义字段添加到DjangRegistration

2024-10-03 11:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我扩展了RegistrationFormUniqueEmail

class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
    first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
    last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
    def save(self, profile_callback=None):
        new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
        new_user.first_name = self.cleaned_data['first_name']
        new_user.last_name = self.cleaned_data['last_name']
        return new_user

然后改变了看法

^{pr2}$

但是,我仍然看到默认表单,它只包含四个字段。在


Tags: nameselfnewcallbackformsprofilelengthlabel
3条回答

我不确定,现在,为什么它不起作用,但我很确定您确实需要编辑django注册的views.py。。。您可以将新的CustomRegistrationFormUniqueEmail作为urls.py中的参数传递。在

我们最近实现了这样一个表单。以下是我们所做的:

  • 创建一个新的backend(只需从默认后端复制它即可)

    registration/
        backends/
            default/
            custom/ # <- your new backend
    

    。。。

  • 在新的urls.py中,调整后端参数

    ...
    { 'backend': 'registration.backends.custom.DefaultBackend' },
    ...
    
  • custom下创建forms.py。根据您的喜好调整此表单(字段和验证)

  • registration/urls.py中,指向正确的后端:

     # from registration.backends.default.urls import *
     from registration.backends.custom.urls import *
    

那应该行得通。尤其是这样做是因为:

  • 您的custom/__init__.py将有一个DefaultBackend类,该类有一个get_form_class方法:

    def get_form_class(self, request):
        """
        Return the default form class used for user registration.
        """
        return RegistrationForm
    
  • 您也可以在该文件中导入您自己的RegistrationForm

    from registration.backends.custom.forms import RegistrationForm
    

相关问题 更多 >