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

兰州优化网站椒江做网站的公司

兰州优化网站,椒江做网站的公司,网站源码整站下载,哪个网站专门做快餐车创建一个序列化类 使用序列化有四种方式 使用json模块#xff0c;完全手写使用django自带的序列化模块 1#xff0c;# from django.core import serializers 2#xff0c;# dataserializers.serialize(“json”,book_list)使用REST framework 带的序列化方法#xff0c…创建一个序列化类 使用序列化有四种方式 使用json模块完全手写使用django自带的序列化模块 1# from django.core import serializers   2# dataserializers.serialize(“json”,book_list)使用REST framework 带的序列化方法但是自己写规则  BookSerializers(serializers.Serializer)使用REST framework 带的序列化方法不自定义完全使用模块 BookSerializers(serializers.ModelSerializer) 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式。我们可以通过声明与Django forms非常相似的序列化器serializers来实现。 models部分: from django.db import models# Create your models here. class Book(models.Model):titlemodels.CharField(max_length32)pricemodels.IntegerField()pub_datemodels.DateField()publishmodels.ForeignKey(Publish)authorsmodels.ManyToManyField(Author)def __str__(self):return self.titleclass Publish(models.Model):namemodels.CharField(max_length32)emailmodels.EmailField()def __str__(self):return self.nameclass Author(models.Model):namemodels.CharField(max_length32)agemodels.IntegerField()def __str__(self):return self.name views部分 from rest_framework.views import APIView from rest_framework.response import Response from .models import * from django.shortcuts import HttpResponse from django.core import serializers from rest_framework import serializers# 方式三自己定义序列化的规则 class BookSerializers(serializers.Serializer):           titleserializers.CharField(max_length32)priceserializers.IntegerField()pub_dateserializers.DateField()publishserializers.CharField(sourcepublish.name)  # 一对多序列化时如果想要指定字段需要使用参数source跨表用.#authorsserializers.CharField(sourceauthors.all)authorsserializers.SerializerMethodField()           # 多对多时自定义字段字段def get_authors(self,obj):   # 名字固定写法 get_*temp[]for author in obj.authors.all():temp.append(author.name)return tempclass Meta:modelBook fields[title,price,pub_date,authors]# 钩子函数def validate_title(self, value):if 草 in value:raise ValidationError(不符合社会主义核心价值观)return valueclass BookViewSet(APIView):def get(self,request,*args,**kwargs):book_listBook.objects.all()# 序列化方式1 自己手写json:# from django.forms.models import model_to_dict# import json# data[]# for obj in book_list:#     data.append(model_to_dict(obj))# print(data)# return HttpResponse(ok)# 序列化方式2使用django自带的序列化模块:# from django.core import serializers# dataserializers.serialize(json,book_list)# return HttpResponse(data)# 序列化方式3使用REST framework 带的序列化方法但是自己写规则:bsBookSerializers(book_list,manyTrue)return Response(bs.data)# 序列化方式4使用REST framework 带的序列化方法不自定义完全使用模块如下 ModelSerializer # ModelSerializer 继承自 Serializer class BookSerializers(serializers.ModelSerializer): # 不自定义完全使用模块class Meta:modelBookfields__all__depth1 # 表的深度即使用一对多多对多时跨表的深度extra_kwargs {tag: {error_messages: {does_not_exist: {pk_value}对应的tag对象不存在。}}} 在视图中使用序列化类 提交post添加请求 def post(self,request,*args,**kwargs):bsBookSerializers(datarequest.data,manyFalse) # 实例化 manyfalse 是实例一个对象manytrue 是实例化quersetif bs.is_valid():# print(bs.validated_data)bs.save()return Response(bs.data)else:return HttpResponse(bs.errors) 单条数据的get查询一条和put更新一条请求 class BookDetailViewSet(APIView):def get(self,request,pk):book_objBook.objects.filter(pkpk).first()bsBookSerializers(book_obj)return Response(bs.data)def put(self,request,pk):book_objBook.objects.filter(pkpk).first()bsBookSerializers(book_obj,datarequest.data) # 有data参数调用save是更新操作if bs.is_valid():bs.save()return Response(bs.data)else:return HttpResponse(bs.errors) 重写save中的create方法 重写create方法当你要对某一个字段进行操作的时候不能用父类的create方法source不能被解析出来 class BookSerializers(serializers.ModelSerializer):class Meta:modelBookfields__all__# exclude [authors,]# depth1def create(self, validated_data):authors validated_data.pop(authors)obj Book.objects.create(**validated_data)obj.authors.add(*authors)return obj 自定义验证 from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import serializers from .. import modelsclass PasswordValidator(object):def __init__(self, base):self.base str(base)def __call__(self, value):if value ! self.base:message This field must be %s. % self.baseraise serializers.ValidationError(message)def set_context(self, serializer_field):# 执行验证之前调用,serializer_fields是当前字段对象passclass ModelUserSerializer(serializers.ModelSerializer):user serializers.CharField(max_length32)class Meta:model models.UserInfofields __all__# fields [user, pwd, ut]depth 2extra_kwargs {user: {min_length: 6},pwd: {validators: [PasswordValidator(666), ]}}# read_only_fields [user] 超链接APIHyperlinked class BookSerializers(serializers.ModelSerializer):publish serializers.HyperlinkedIdentityField(view_namepublish_detail, # 反向解析lookup_fieldpublish_id, # 这里是取这个id值当你循环到那个外键的那个id值的值的时候作为参数传进去lookup_url_kwargpk) # 把还是那个面的id作为参数传进去就是在url路由里面的有名分组class Meta:modelBookfields__all__#depth1 urls部分 urlpatterns  [url(r^books/$, views.BookViewSet.as_view(),namebook_list), # 需要加name参数url(r^books/(?Ppk\d)$, views.BookDetailViewSet.as_view(),namebook_detail),url(r^publishers/$, views.PublishViewSet.as_view(),namepublish_list),url(r^publishers/(?Ppk\d)$, views.PublishDetailViewSet.as_view(),namepublish_detail), ]
http://www.zqtcl.cn/news/147470/

相关文章:

  • 深圳企业网站建设制作公司叶县红色家园网站建设
  • 网站制作报价被哪些因素影响建设银行官方网站首页个人登录
  • 免费网站怎么建谁能给个网站谢谢
  • 吴忠网站建设家里面的服务器可以做网站吗
  • 这是我自己做的网站做网站前台要学什么课程
  • 程序网站开发建设隔离变压器移动网站
  • 网站设置不发送消息怎么设置回来用typecho做的网站
  • 网站机房建设嵌入式培训机构哪家好
  • 购物网站页面设计图片网站 签约
  • 上海网站改版方案网站邮件设置
  • 如何在自己网站添加链接高端品牌logo图片
  • 网站建设找c宋南南app软件设计
  • 龙岗网站推广seo 0xu
  • 成都做网站微网站后台录入
  • 开发区网站建设山东房地产新闻
  • 手机如何搭建网站网站菜单导航
  • 网站建设丿金手指专业社交投票论坛网站开发
  • 做一套网站开发多少钱设计高端的国外网站
  • 有没有网站做lol网站的网页设计实验报告书
  • 网站后台域名重庆好的seo平台
  • 文化建设设计公司网站跨境电商亚马逊
  • 建设企业网站官网下载中心游戏网站开发设计报告
  • 外贸网站导航栏建设技巧专做奢侈品品牌的网站
  • 网站开发工程师资格证网站建设代理都有哪些
  • 汕头网站建设技术托管wordpress faq
  • 外贸网站建设系统能联系做仿瓷的网站
  • 阿里云网站域名绑定做网站的需要哪些职位
  • cnnic网站备案dnf网站上怎么做商人
  • 怎么做微拍网站代理记账公司注册
  • 长宁深圳网站建设公司建材公司网站建设方案