以之前车辆违章项目来做
修改urls.py
path('api/',api) #返回json收据的url
在views.py中添加函数
def api(request:HttpRequest) -> HttpResponse:
queryset = Record.objects.filter(is_deleted=False)\
.dafer('is_deleted','deleted_time','updated_time')\
.select_related('car').order_by('-makedate')
carinfo = request.POST.get('carinfo')
if carinfo:
carinfo = re.sub(r'\s','',carinfo)
queryset = queryset.filter(
Q(car__carno__istartswith=carinfo) | Q(car__owner__icontains=carinfo)
)
records = []
for record in queryset:
data = {
'no':record.no,
'carno':record.car.carno,
'owne':record.car.owner,
'reason':record.reason,
'makedate':record.makedate,
'punish':record.punish,
'dealt':record.dealt
}
records.append(data)
return JsonResponse(records,safe=False)
#请求api可以返回一串数组
#上面的代码中,我们通过循环遍历查询违章得到的 QuerySet 对象,将每个违章的数据处理成一个字
典,在将字典保存在名为 subjects 的列表容器中,最后利用 JsonResponse 完成对列表的序列化,向浏
览器返回JSON格式的数据。由于 JsonResponse 序列化的是一个列表而不是字典,所以需要指定 safe
参数的值为 False 才能完成对 subjects 的序列化,否则会产生 TypeError 异常。
利用Django第三方库djangorestframework来实现序列化
安装依赖
pip install djangorestframework
在settings.py中修改代码
INSTALLED_APPS = [
...,
'restframework',
]
在应用下新建一个py文件(本项目在search下)
新建py文件名称为 serializers.py
进入serializers.py中
"""
自定义序列化器(把模型对象处理成字典)
"""
from rest_framework import serializers
from search.models import Record
class RecordSerializer(serializers.ModelSerializer):
class Meta:
model = Record #要序列化的对象
fields = '__all__'#__all__ 序列化所有
原文链接:https://blog.csdn.net/weixin_44634704/article/details/107694512