我正在使用django构建一个登录/注销用户系统,然后开始使用django auth系统。
我使用的是定制的Django UserCreationForm,如下所示:
views.py
from django.contrib.auth.forms import UserCreationForm
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/books/")
else:
form = UserCreationForm()
return render(request, "registration/register.html", {
'form': form,
})但是这个表单呈现了很多不想要的东西,如下所示:https://app.box.com/s/wmrtyal3mctb9hctsnom
首先,我想去掉增加的信息,有什么好办法吗?有什么好办法吗?是否有一种自己编辑UserCreationForm的方法,或者我必须创建自己的表单?
第二,假设我想在注册页面中添加更多必需的字段,那么最好的方法是什么?假设我想让一个人注册男性或女性-I,意识到我应该扩展用户模型,但是我如何同时注册到原始用户模型和扩展用户模型?
发布于 2014-04-22 03:27:39
与其扩展UserCreationForm类,不如重写它。查看它的源代码,这里。
例如,如果您想去掉密码字段旁边的文本,即“输入与上面相同的密码”,请删除以下一行:
help_text=_("Enter the same password as above, for verification."))从django /django/cont肋骨/auth/forms.py(在上面的链接中)
编辑:我建议重写表单类而不是扩展它们的原因是这样更方便。来自Django的文档:
如果您不想使用内置视图,但希望不必为此功能编写表单,则身份验证系统提供了位于django.contrib.auth.forms中的几个内置窗体。
如果要扩展用户模型类,则需要相应地更改表单类。又一次从医生那里:
正如您所预期的,内置Django的表单和视图对他们正在使用的用户模型做出了某些假设。如果您的用户模型不遵循相同的假设,则可能需要定义一个替换表单,并将该表单作为auth视图配置的一部分传递进来。
--如果您只想更改UserCreationForm,就会像前面提到的在forms.py模块中那样编辑UserCreationForm类。
如果,正如您在问题中提到的,您希望向注册页面添加更多必需字段,则需要创建自定义用户模型。有关如何执行此操作的详细信息,请参阅这里。
https://stackoverflow.com/questions/23209678
复制相似问题