我正在运行django应用程序。我有一个错误:
TypeError: Object of type UserForm is not JSON serializable
下面是代码:
forms.py:
from django import forms
from .models import Profile
from django.contrib.auth.models import User
class UserForm(forms.Form):
username=forms.CharField(widget=forms.PasswordInput)
password=forms.CharField(widget=forms.PasswordInput)
class Meta():
model=User
fields=('username','password')
views.py:
def signup(request):
registered=False
failed_ref=False
wrong_ref=False
if request.method=='POST':
user_form = UserForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
user_form=UserForm()
return JsonResponse({'user_form':user_form,'registered':registered,
'failed_ref':failed_ref,'wrong_ref':wrong_ref})
如何使此表格JSON可序列化?
答案 0 :(得分:0)
表格用于“用户界面”(设置在PC后面并填写表格的用户)。对于移动应用程序(或网络应用程序),您应该在后端具有一个可以与这些系统进行通信的“应用程序编程接口(API)”(例如,移动应用程序)。
此API只是从请求正文(可能为JSON
)接收数据(例如用户信息),例如:
{"email": "an emai", "pass": "secret"}
。
因此,您注册端点的请求可以采用以下形式:
POST: your_host:your_port/users or
{"email": "an emai", "pass": "secret"...}
在将后端与前端分开时,只要信息采用正确格式(例如JSON
),后端就不会更多地涉及信息的接收方式,因此数据可能是用户填写表格或AJAX调用或通过POSTMAN等的结果。
因此您的功能可能需要重写为类似的内容:
def signup(request):
registered=False
failed_ref=False
wrong_ref=False
if request.method=='POST':
user_form = UserForm(data=request.POST)
if user_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
return HttpResponse(status=200)
eles:
return HttpResponse(status=400)
注意:此代码仅是示例性代码,最好使用类似django rest framework
的代码。