我延长了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
然后更改了视图
# form = form_class(data=request.POST, files=request.FILES)
form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)
但是,我仍然看到默认表单只包含四个字段。
答案 0 :(得分:3)
我们最近实施了这样一个表格。这就是我们所做的:
创建一个新的backend
(只需将其从默认后端复制开始)
registration/
backends/
default/
custom/ # <- your new backend
...
在新的urls.py
中调整后端参数
...
{ 'backend': 'registration.backends.custom.DefaultBackend' },
...
在forms.py
下创建custom
。根据您的喜好调整此表单(字段和验证)
在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
答案 1 :(得分:0)
我不确定,为什么它不起作用,但我很确定你不需要编辑django-registration的views.py
...你可以通过您的新CustomRegistrationFormUniqueEmail
作为urls.py
中的参数。
答案 2 :(得分:0)