首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自定义用户表单而不是内置的+自定义必需字段

自定义用户表单而不是内置的+自定义必需字段
EN

Stack Overflow用户
提问于 2014-04-22 03:09:27
回答 1查看 799关注 0票数 0

我正在使用django构建一个登录/注销用户系统,然后开始使用django auth系统。

我使用的是定制的Django UserCreationForm,如下所示:

views.py

代码语言:javascript
运行
复制
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,意识到我应该扩展用户模型,但是我如何同时注册到原始用户模型和扩展用户模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-22 03:27:39

与其扩展UserCreationForm类,不如重写它。查看它的源代码,这里

例如,如果您想去掉密码字段旁边的文本,即“输入与上面相同的密码”,请删除以下一行:

代码语言:javascript
运行
复制
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类。

如果,正如您在问题中提到的,您希望向注册页面添加更多必需字段,则需要创建自定义用户模型。有关如何执行此操作的详细信息,请参阅这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23209678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档