我正在从旧版本的 Django-Registration 迁移到该模块的 1.0 版本。
我正在用我创建的自定义注册表单覆盖正常的注册表单。此行为已停止与 Django-registration 1.0 一起使用,我正在尝试让它再次工作。但至今尚未成功。这是我的 urls.py 文件的样子:
from registration.views import RegistrationView
from myApp.forms import *
<...SNIPPED...>
url (
r'^accounts/register/$',
RegistrationView.as_view(),
{
'form_class': extendedRegistrationForm,
'backend': 'registration.backends.default.DefaultBackend',
}
)
这就是 myApp 的 forms.py 的样子:
from registration.forms import RegistrationFormUniqueEmail
<...SNIPPED...>
class extendedRegistrationForm(RegistrationFormUniqueEmail):
firstName = forms.CharField(
widget=forms.TextInput(),
label="First Name",
required=False,
)
我看到的行为是这样的:在注册屏幕上,它们是用户名、电子邮件地址、密码、密码确认的输入框和字段标签。但是,我的表单中应显示“名字”的输入框和字段标签的插槽完全是空的。
如何修改 urls.py 和 forms.py 以便我的 ExtendedRegistrationForm 中的字段正确包含在屏幕上?几乎相同的代码在旧版本的 Django-Registration 上运行良好。
最佳答案
首先,如果要使用默认后端,请从默认后端模块导入 View 。
from registration.backends.default.views import RegistrationView
其次,您可以通过子类化 RegistrationView
或将其作为参数传递给 as_view()
来设置 form_class
。请参阅CBV docs欲了解更多信息。
url (
r'^accounts/register/$',
RegistrationView.as_view(form_class=extendedRegistrationForm),
)
关于python - 如何覆盖 Django-Registration 1.0 版中的默认注册表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20738954/