微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用POST数据中的allauth save_user方法设置自定义用户字段

如何解决如何使用POST数据中的allauth save_user方法设置自定义用户字段

因此,我有两种类型的用户,我想在网站的其中一个页面上提供其他字段cardholder,并检查在通过Google注册用户期间是否为真

class DefaultSocialAccountAdapterCustom(DefaultSocialAccountAdapter):

    def save_user(self,request,sociallogin,form=None):
        """Check if it's cardholder registration"""

        user = super().save_user(request,form)

        if request.data.get('cardholder',False): # <-- how to get this POST value??
            user.cardholder = True
            user.save()

        return user

但是我收到错误

'WsgiRequest' object has no attribute 'data'

在通过社交适配器进行用户注册并将用户的持卡人字段设置为True期间,如何从请求中读取cardholder的值?

解决方法

如果您想获取持卡人的POST值,我相信您将必须实现以下代码...。

if request.type == 'POST': cardholder = request.POST['cardholder']

希望这对您有帮助...

,

我使用GoogleAuthView的自定义序列化程序类解决了我的问题:

class GoogleAuthView(SocialLoginView):
    adapter_class = GoogleOAuth2Adapter
    serializer_class = CardholderSocialLoginSerializer

在这里,我通过覆盖序列化程序的cardholder方法来设置自定义字段validate(),如下所示:

class CardholderSocialLoginSerializer(SocialLoginSerializer):
    """Adds cardholder field for Google registration"""

    cardholder = serializers.BooleanField(required=False,default=False)

    def validate(self,attrs):
        attrs = super().validate(attrs)
        user = attrs['user']
        if attrs.get('cardholder'):
            user.cardholder = True
            user.save()
        return attrs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。