无法添加自定义字段到Django的注册

问题描述:

我伸出RegistrationFormUniqueEmail无法添加自定义字段到Django的注册

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 

然后改变视图

#  form = form_class(data=request.POST, files=request.FILES) 
     form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES) 

但是,我仍然看到其中只包含四个字段的默认格式。

我们最近实现了这样一个表格。下面是我们做了什么:

  • 创建一个新的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 
    

我不知道,断手,为什么它不工作,但我敢肯定你做需要编辑的Django登记的views.py ...你可以把你的新CustomRegistrationFormUniqueEmailurls.py参数。