问题描述
因此,我有两种类型的用户,我想在网站的其中一个页面上提供其他字段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