为了账号安全,请及时绑定邮箱和手机立即绑定

如何在使用django-allauth时自定义用户配置文件

如何在使用django-allauth时自定义用户配置文件

Smart猫小萌 2019-07-29 15:37:31
如何在使用django-allauth时自定义用户配置文件我有一个django-allauth app的django项目。我需要在注册时从用户处收集其他数据。我在这里遇到了类似的问题, 但不幸的是,没有人回答了个人资料定制部分。根据提供的文件django-allauth:ACCOUNT_SIGNUP_FORM_CLASS(= None)指向自定义表单类(例如‘myapp.forms.SignupForm’)的字符串,用于在注册期间向用户请求其他输入(例如,简报注册,出生日期)。此类应实现一个‘save’方法,接受新注册的用户作为其唯一参数。我是django的新手,我正在努力解决这个问题。有人可以提供这种自定义表单类的示例吗?我是否需要添加一个模型类,以及一个链接到喜欢的用户对象这个 ?
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

假设您想在注册期间询问用户他的姓/名。您需要将这些字段放在您自己的表单中,如下所示:

class SignupForm(forms.Form):
    first_name = forms.CharField(max_length=30, label='Voornaam')
    last_name = forms.CharField(max_length=30, label='Achternaam')
    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()

然后,在您的设置中指向此表单:

ACCOUNT_SIGNUP_FORM_CLASS = 'yourproject.yourapp.forms.SignupForm'

就这样。


查看完整回答
反对 回复 2019-07-29
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

使用pennersr建议的解决方案,我得到了一个DeprecationWarning:

DeprecationWarning: The custom signup form must offer a def signup(self, request, user) method DeprecationWarning)

这是因为从版本0.15开始,不推荐使用save方法,而采用def注册(请求,用户)方法。

所以要解决这个问题,示例的代码应该是这样的:

class SignupForm(forms.Form):
    first_name = forms.CharField(max_length=30, label='Voornaam')
    last_name = forms.CharField(max_length=30, label='Achternaam')
    def signup(self, request, user):
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 972 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信