当前位置: 首页 > news >正文

智慧农业网站建设网站建设参考文献目录

智慧农业网站建设,网站建设参考文献目录,seo流量软件,熊掌号网站改造绑定织梦网站1. 序列化器 REST framework提供了一个serializer类#xff0c;它可以非常方便的序列化模型实例和查询集为JSON或者其他内容形式。它还提供反序列化#xff0c;允许在验证传入数据后将解析的数据转换回复杂类型。 2. 定义序列化器 在crm应用目录下创建serializers.py文件它可以非常方便的序列化模型实例和查询集为JSON或者其他内容形式。它还提供反序列化允许在验证传入数据后将解析的数据转换回复杂类型。 2. 定义序列化器 在crm应用目录下创建serializers.py文件编写代码如下 from rest_framework import serializersfrom crm.models import Studentclass StudentSerializer(serializers.Serializer):学生序列化器id serializers.IntegerField(label学生id, read_onlyTrue)name serializers.CharField(label姓名)sex serializers.IntegerField(label性别, default1)age serializers.IntegerField(label年龄, requiredFalse, allow_nullTrue)qq serializers.CharField(labelqq号码, requiredFalse, allow_nullTrue)phone serializers.CharField(label手机号码, requiredFalse, allow_nullTrue)channel serializers.CharField(label渠道, read_onlyTrue)c_time serializers.DateTimeField(label创建时间, read_onlyTrue)def create(self, validated_data):创建对象:param validated_data::return:return Student.objects.create(**validated_data)def update(self, instance, validated_data):更新对象:param instance: :param validated_data: :return: for key, value in validated_data.items():setattr(instance, key, value)instance.save()return instance 序列化器类的第一部分定义了要序列化/反序列化的字段。create()和update()方法定义了在调用serializer.save()时如何创建或修改实例。 3. 使用序列化器 序列化  进入Django Shell python manage.py shell 先导入一些需要用到的对象 from crm.models import Student from crm.serializers import StudentSerializer from rest_framework.renderers import JSONRenderer from rest_framework.parsers import JSONParserobj Student.objects.first() 序列化这个实例 s StudentSerializer(obj) s.data # {id: 3, name: 赵六, sex: 1, age: 22, qq: 1111, phone: 18684720553, channel: 抖音, c_time: 2022-01-14T21:45:06.03774508:00} 我们已经将模型实例转换为Python原生数据类型。为了完成序列化过程我们将数据呈现为json。 JSONRenderer().render(s.data) # b{id:3,name:\xe8\xb5\xb5\xe5\x85\xad,sex:1,age:22,qq:1111,phone:18684720553,channel:\xe6\x8a\x96\xe9\x9f\xb3,c_time:2022-01-14T21:45:06.03774508:00} 我们还可以序列化查询集而不是模型实例。为此我们只需manyTrue向序列化程序参数添加一个标志。 ss StudentSerializer(Student.objects.all(), manyTrue) ss.data # [OrderedDict([(id, 3), (name, 赵六), (sex, 1), (age, 22), (qq, 1111), (phone, 18684720553), (channel, 抖音), (c_time, 2022-01-14T21:45:06.03774508:00)]), OrderedDict([(id, 15), (name, 心蓝), (sex, 1), (age, 20), (qq, 111), (phone, 1111123), (channel, 百度), (c_time, 2022-02-08T21:59:54.74309608:00)]), OrderedDict([(id, 21), (name, 西瓜), (sex, 1), (age, 20), (qq, 123456789), (phone, 987654321), (channel, 抖音), (c_time, 2022-02-09T21:15:37.19950908:00)])] 反序列化 反序列化是相似的首先将序列化数据(json)解析为原生python数据类型省略然后将其填充到一个序列器对象中。 里面要注意的是 当执行serializer.save()的时候会看有没有instance这个对象 有的话就是更新没有的话就是创建。 In [1]: from crm.serializers import StudentSerializerIn [2]: from crm.models import *In [3]: data {name: 李晨, sex:1, age:18}In [4]: serializer StudentSerializer(datadata)In [5]: serializer.is_valid() Out[5]: TrueIn [6]: serializer.validated_data Out[6]: OrderedDict([(name, 李晨), (sex, 1), (age, 18)])In [7]: stu serializer.save()In [8]: stu Out[8]: Student: 李晨4. 使用模型序列化器 我们的StudentSerializer类复制了大量Student模型中的的信息。RESTframework提供了一个ModelSerializer,它可以根据模型自动创建Serializer类让我们的代码更简洁。再次打开crm/serializers.py模块并用以下代码替换StudentSerializer类。 class StudentSerializer(serializers.ModelSerializer):class Meta:model Studentfields [id, name, sex, age, phone, qq, c_time] 序列化器的一个很好的属性是您可以通过打印序列化器实例的表示形式来检查它的所有字段。进入Django shell然后尝试如下操作 In [1]: from crm.serializers import StudentSerializer In [2]: s StudentSerializer() In [3]: print(s) StudentSerializer():id IntegerField(labelID, read_onlyTrue)name CharField(help_text姓名, label姓名, max_length20)age IntegerField(allow_nullTrue, help_text年龄, label年龄, max_value32767, min_value-32768, requiredFalse)sex IntegerField(help_text性别, label性别, max_value32767, min_value-32768, requiredFalse)qq CharField(allow_blankTrue, allow_nullTrue, help_textqq号码, labelQq号码, max_length20, requiredFalse, validators[UniqueValidator(querysetStudent.objects.all())])phone CharField(allow_blankTrue, allow_nullTrue, help_text手机号码, label手机号码, max_length20, requiredFalse, validators[UniqueValidator(querysetStudent.objects.all())])c_time DateTimeField(label创建时间, read_onlyTrue)channel PrimaryKeyRelatedField(allow_nullTrue, help_text渠道来源, label渠道, querysetChannel.objects.all(), requiredFalse) ModelSerializer类并没有做什么特别神奇的事情它们只是创建serializer类的一个快捷方式: 一组自动确定的字段。create()和update()方法的简单默认实现。5. 使用序列化器编写普通的Django视图 让我们看看如何使用我们新的序列化器类来编写一些API视图。目前我们不会使用任何REST框架的其他特性我们只会把视图写成普通的Django视图。 编辑crm/views.py添加如下内容 def student_list(request):学生列表创建学生视图:param request::return:if request.method GET:objs Student.objects.all()serializer StudentSerializer(objs, manyTrue)return JsonResponse(serializer.data, safeFalse)elif request.method POST:data JSONParser().parse(request)serializer StudentSerializer(datadata)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data, status201)else:return JsonResponse(serializer.errors, status400)def student_detail(request, pk):检索更新或者删除一个学生:param request::param pk::return:try:obj Student.objects.get(pkpk)except Student.DoesNotExist:return HttpResponse(status404)if request.method GET:serializer StudentSerializer(obj)return JsonResponse(serializer.data)elif request.method PUT:data JSONParser().parse(request)serializer StudentSerializer(obj, datadata)if serializer.is_valid():serializer.save()return JsonResponse(serializer.data)return JsonResponse(serializer.errors, status400)elif request.method DELETE:obj.delete()return HttpResponse(status204) 路由配置如下 urlpatterns [path(projects/, views.project_list),path(projects/int:pk/, views.project_detail) ] 那么通过/projests/和/projects/id/就可以访问对应的接口了。
http://www.hkea.cn/news/14495378/

相关文章:

  • 北京赵公口网站建设建材网中国建材第一网
  • 做校园网站 怎么备案公众号开发者id在哪
  • 网站建设的基本特点网站集约化建设建议
  • 石嘴山网站建设杭州公司注册流程及费用
  • 网络网站如何推广现在阳性最新情况
  • 上海技术网站建设南宁网站seo
  • 企业型网站建设哪家比较好wordpress不用ftp下载文件
  • 在自己电脑建设网站安徽公共资源交易中心
  • 温州优化网站wordpress数据库批量替换域名
  • 域名怎么解析到网站chat gpt 国内版
  • 企业网站制作及cms技术icp许可证个人网站
  • 松原做网站平台做寻亲网站的理由
  • 网站建设html模板下载国外自助建站系统
  • 做同城特价的网站泉州北京网站建设价格
  • 全响应网站wordpress影院404
  • 外贸网站 费用广西南宁市住房和城乡建设局网站
  • 欣赏网站南山网站设计方案
  • 1个人做多网站负责人软件设计师考什么
  • 芜湖企业网站制作保定市建设计网站
  • 建设银行银行号查询网站网页版qq登录wordpress
  • 做艺术的网站男人都懂的填空题2023
  • 网站运营如何做单位网站建设制作
  • 做一个公司网站一般多少钱滕州 网站 建设
  • 福州微网站开发南山网站开发
  • 网站建设毕业设计指导老师意见珠海九洲旅游开发公司
  • 课程建设类教学成果奖网站网站建设的目的包含哪些方面
  • 西安优化网站wordpress视频代码html5
  • 工信部资质查询网站wordpress 分类 如何修改
  • 网站制作备案上线流程网络营销软件站
  • 创建网站需要多少钱陕西网站建设推广