重庆网站建设电脑版,亚马逊ec2搭建Wordpress,拖拽建站系统源码,手机网站列表模板前言 关于序列化操作#xff0c;就是将一个可迭代的数据结构#xff0c;通过便利的方式进行我们所需要的操作。 今天历来归纳一下#xff0c;Django中的几种不同得分方法#xff0c;已经Django-restframework提供的方法 创建一个Django的项目 再新建一个app 创建一个模型就是将一个可迭代的数据结构通过便利的方式进行我们所需要的操作。 今天历来归纳一下Django中的几种不同得分方法已经Django-restframework提供的方法 创建一个Django的项目 再新建一个app 创建一个模型以书本出版社为例自行迁移完成以后再配置路由主要讲解的是views.py其他的不多说了。 # RESFUL_DJ/app/models.pyfrom django.db import models# Create your models here.
class Publisher(models.Model):name models.CharField(max_length32, verbose_name名称, uniqueTrue)address models.CharField(max_length128, verbose_name地址)def __str__(self):return self.nameclass Meta:db_table db_publisherverbose_name 出版商verbose_name_plural verbose_name 数据库中的内容使用的是sqlite3 现在我们来展示数据库中的所有数据以json的格式传给前端 RESTFUL_DJ/app/views.py 方法一 from django.http import HttpResponsefrom app import modelsdef publisher_list(request):通过不同的方法展示所有的出版社对象:param request: 请求:return: 出版社对象queryset models.Publisher.objects.all()# 方法一data []# 这个方法的缺点就是# 如果字段多了的话就需要一个一个去写会很麻烦# 返回的是字典类型所以需要json转换成json格式字符串for i in queryset:p_tmp {name: i.name,address: i.address}data.append(p_tmp)import jsonreturn HttpResponse(json.dumps(data), content_typeapplication/json) 结果 这是谷歌浏览器安装的插件的原因方便查看原结构是这样 方法二 from django.http import HttpResponsefrom app import modelsdef publisher_list(request):通过不同的方法展示所有的出版社对象:param request: 请求:return: 出版社对象queryset models.Publisher.objects.all()# 方法二data []# django自带的模型转字典方法# 缺点就是图片之类的文件无法转换# 返回的是字典类型所以需要json转换成json格式字符串from django.forms.models import model_to_dictfor i in queryset:data.append(model_to_dict(i))import jsonreturn HttpResponse(json.dumps(data), content_typeapplication/json) 结果 方法三 from django.http import HttpResponsefrom app import modelsdef publisher_list(request):通过不同的方法展示所有的出版社对象:param request: 请求:return: 出版社对象queryset models.Publisher.objects.all()# 方法三# 导入django自带的序列化器# # 返回的是json字符串不需要再用json转换一次了from django.core import serializersdata serializers.serialize(json, queryset)return HttpResponse(data, content_typeapplication/json) 结果 方法四 首先需要安装djangorestframework(pip install djangorestframework) 配置好settings.py文件 在app下新建文件serializers.py使用跟form差不多 from rest_framework import serializers
from app import modelsclass PublisherSerializer(serializers.Serializer): # 类的命名必须是models中的模型名称加Seriaizerid serializers.IntegerField(read_onlyTrue)name serializers.CharField(max_length32)address serializers.CharField(max_length128)def create(self, validated_data):重写create方法创建数据:param validated_data: 用户传递的经过了校验的数据:return: 创建的数据return models.Publisher.objects.create(**validated_data)def update(self, instance, validated_data):更新数据操作:param instance: 原来的数据:param validated_data: 用户传递的经过了校验的数据:return: 更新后的数据instance.name validated_data.get(name, instance.name)instance.address validated_data.get(address, instance.address)instance.save()return instance 在shell中测试一下展示操作 测试一下create共功能 运行项目结果 from django.shortcuts import render
from django.http import HttpResponsefrom app import modelsdef publisher_list(request):通过不同的方法展示所有的出版社对象:param request: 请求:return: 出版社对象queryset models.Publisher.objects.all()# 方法四# 使用djangorestframework中的序列化from app import serializersserializer serializers.PublisherSerializer(queryset, manyTrue) # 多个遍历data serializer.data # OrderedDict对象import jsonreturn HttpResponse(json.dumps(data), content_typeapplication/json) 在前面创建的serializers.py文件中定义的序列化字段其实和models中的模型字段是一样的我们可以继承过来使用 继承serializers.ModelSerializer方法里面本身就封装好了新建更新等数据操作的方法 更改serializers.py文件的内容 from rest_framework import serializers
from app import modelsclass PublisherSerializer(serializers.ModelSerializer):class Meta:model models.Publisherfields (id,name,address) 结果 转载于:https://www.cnblogs.com/gcgc/p/11320636.html