[英]Object of type <> is not JSON serializable
我正在使用 Django 運行一個網站。 這是views.py:
def signup(request):
registered=False
failed_ref=False
wrong_ref=False
if request.method=='POST':
if 'city' in request.POST:
user_form = UserForm(data=request.POST)
profile_form = ProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
else:
print(user_form.errors,profile_form.errors)
else:
profile_form=ProfileForm()
return JsonResponse({'profile_form':profile_form,'registered':registered,
'failed_ref':failed_ref,'wrong_ref':wrong_ref},safe=False)
當我嘗試獲取 Json Response 時,我得到了
ProfileForm 類型的對象不是 JSON Serializable
我的ProfileForm()
:
class ProfileForm(forms.ModelForm):
class Meta:
model=Profile
widgets = {
'address_line_1': forms.TextInput(attrs={'placeholder': 'Door No,Building'}),
'address_line_2': forms.TextInput(attrs={'placeholder': 'Area,Locality'}),
}
fields=('first_name','last_name','mobile_no','email','address_line_1','address_line_2','postal_code','city','country','image','referral_contact','promo_coupon','ic')
如何為此獲得 JSON 響應?
您需要序列化數據。
從 django.core 導入序列化程序
data = serializers.serialize('xml', Profile.objects.all(), fields=('first_name','last_name','mobile_no','email','address_line_1','address_line_2','postal_code','city','country','image','referral_contact','promo_coupon','ic'))
表單類不是 JSON Serializable,您應該使用cleaned_data
def signup(request):
registered = False
failed_ref = False
wrong_ref = False
if request.method == 'POST':
if 'city' in request.POST:
user_form = UserForm(data=request.POST)
profile_form = ProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
# use cleaned_data
profile_form.cleaned_data['user'] = user_form.cleaned_data
else:
print(user_form.errors, profile_form.errors)
else:
profile_form = ProfileForm()
return JsonResponse(
{
'profile_form': profile_form.cleaned_data,
'registered': registered,
'failed_ref': failed_ref,
'wrong_ref': wrong_ref
},
safe=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.