无法添加自定义字段到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
...你可以把你的新CustomRegistrationFormUniqueEmail
在urls.py
参数。