如何解决如何使用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 举报,一经查实,本站将立刻删除。