【发布时间】:2016-03-22 20:43:14
【问题描述】:
大家好,我正在尝试通过 API 在 django rest 框架中使用嵌套序列化程序创建用户,但我遇到了一些问题:
这是我的代码:
class AffiliateRegisterSerializer(serializers.ModelSerializer):
class Meta:
model = Affiliate
fields = ('phone','address','state','city','ZIP','country','company','web_name','web_url','web_desc','payee_name','monthly_visits',)
还有我的第二个序列化器:
class UserSerializer(serializers.ModelSerializer):
'''
Registering a new user with Affiliate Profile
'''
affiliate = AffiliateRegisterSerializer(required=False)
class Meta:
model = User
fields = ('username','first_name','last_name','email','password','affiliate',)
write_only_fields = ('password',)
read_only_fields = ('id','affiliate',)
def create(self, validated_data):
affiliate_data = validated_data.pop('affiliate')
user = User.objects.create_user(**validated_data)
Affiliate.objects.create(user=user, **affiliate_data)
return user
这是我的观点:
class AffiliateSignUp(generics.CreateAPIView):
'''
API endpoint for Affiliate Users registration
'''
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.AllowAny]
@method_decorator(ensure_csrf_cookie)
@method_decorator(csrf_protect)
def create(self, request):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
如何通过 AngularJS 发送 POST 请求以立即创建用户和配置文件?
我正在尝试通过 AngularJs 发布一个嵌套对象,但它说:
affiliate: ["此字段为必填项。"]
如果我直接从后端通过 url: /api/affilaite 它注册用户非常好,但我在这里苦苦挣扎的唯一问题是,
如何在 javascript 中发送带有嵌套对象的 POST 请求。
这是我的 javascript 代码:
data:$httpParamSerializerJQLike({
'first_name':$scope.userData['first_name'],
'last_name':$scope.userData['last_name'],
'username':$scope.userData['username'],
'password':$scope.userData['password'],
'email':$scope.userData['email'],
affiliate:{
'phone':$scope.userData['phone'],
'address':$scope.userData['address'],
'state':$scope.userData['state'],
'city':$scope.userData['city'],
'ZIP':$scope.userData['ZIP'],
'country':$scope.userData['country'],
'company':$scope.userData['company'],
'web_url':$scope.userData['webUrl'],
'web_name':$scope.userData['webName'],
'web_desc':$scope.userData['webDesc'],
//'web_category':$scope.userData ['webCategory'],
'payee_name':$scope.userData['payeeName'],
'monthly_visits':$scope.userData['monthly_visits']
}
}
请帮帮我:D 我很挣扎:P
【问题讨论】:
-
嗯。这很奇怪。看起来您正在有效载荷中发送
affiliate。您可以在视图中打印request.data以验证其中的内容吗? -
附属[ZIP]:“1230”附属[地址]:“balindollska bb”附属[城市]:“Gostivar”附属[公司]:“Maxleads”附属[国家]:“马其顿”附属[monthly_visits]:“132523”附属[payee_name]:“gentz”附属[电话]:“71666022”附属[州]:“马其顿”附属[web_desc]:“附属营销网络”附属[web_name]:“Maxleads”附属[web_url]:“maxleads.net”电子邮件:“gentz@gentz.com”名字:“龙胆”姓氏:“Elmazi”密码:“gentz”用户名:“gentz”
-
具体数据是什么?你能更新答案吗?
-
确切的数据是什么意思?
-
请粘贴
print(request.data)的确切内容。您在上面粘贴的不是有效数据。
标签: javascript angularjs django django-rest-framework