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

做网站图片分辨率多少百度站长工具收费吗

做网站图片分辨率多少,百度站长工具收费吗,企业信息管理系统的设计与实现,想象力网站建设作用: 1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型 3. 反序列化,完成数据校验功能 定义序列化器 Django REST framework中的Serializer使用类来定义&a…

作用:

1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串
2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型
3. 反序列化,完成数据校验功能

  • 定义序列化器

    • Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。

      接下来,为了方便演示序列化器的使用,我们先创建一个新的子应用sers

      python manage.py startapp sers
      from django.db import models# Create your models here.class Book(models.Model):title = models.CharField(max_length=32,verbose_name="书籍名称")price = models.IntegerField(verbose_name="价格")pub_date = models.DateField(verbose_name="出版日期")

      我们想为Book模型类提供一个序列化器,可以定义如下:

      from rest_framework import serializersclass BookSerializer(serializers.Serializer):title = serializers.CharField()price = serializers.IntegerField()pub_date = serializers.DateField()

      注意:serializer不是只能为数据库模型类定义,也可以为非数据库模型类的数据定义。serializer是独立于数据库之外的存在。

  • 创建Serializer对象

    • 定义好Serializer类后,就可以创建Serializer对象了。

      Serializer的构造方法为:Serializer(instance=None, data=empty, **kwarg)

    • 说明:

      • 用于序列化时,将模型类对象传入instance参数

      • 用于反序列化时,将要被反序列化的数据传入data参数

      • 除了instance和data参数外,在构造Serializer对象时,还可通过context参数额外添加数据,如 serializer = AccountSerializer(account, context={'request': request})

    • 通过context参数附加的数据,可以通过Serializer对象的context属性获取。

      • 使用序列化器的时候一定要注意,序列化器声明了以后,不会自动执行,需要我们在视图中进行调用才可以。

      • 序列化器无法直接接收数据,需要我们在视图中创建序列化器对象时把使用的数据传递过来。

      • 序列化器的字段声明类似于我们前面使用过的表单系统。

      • 开发restful api时,序列化器会帮我们把模型数据转换成字典.

      • drf提供的视图会帮我们把字典转换成json,或者把客户端发送过来的数据转换字典.

  • 序列化器的使用

    • 序列化器的使用分两个阶段:

      • 处理客户端请求时,使用序列化器可以完成对数据的反序列化。

      • 处理服务器响应时,使用序列化器可以完成对数据的序列化。

    • 序列化

      • 基本序列化
        • 先查询出一个学生对象
          from sers.models import Book
          book = Book.objects.get(pk=1)

        • 构造序列化器对象
          from .serializers import BookSerializer
          bookSer = BookSerializer(instance=book)
        • 获取序列化数据,通过data属性可以获取序列化后的数据
        • 路由
          # urls.py
          path("sers/", include("sers.urls")),
          # sers.urls
          path('books/(\d+)', BookView.as_view()),
        • 视图
          from rest_framework.response import Response
          from rest_framework.views import APIView
          from .models import Book
          from .sers import BookSerializerclass BookView(APIView):def get(self, request,id):book = Book.objects.get(pk=id)bs = BookSerializer(instance=book)return Response(bs.data)
        • 如果要被序列化的是包含多条数据的查询集QuerySet,可以通过添加many=True参数补充说明
          class BookView(APIView):def get(self, request):# book = Book.objects.get(pk=1)books = Book.objects.all()bs = BookSerializer(instance=books, many=True)return Response(bs.data)

  • 反序列化

    • 数据验证
      • 使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。

        在获取反序列化的数据前,必须调用is_valid()方法进行验证,验证成功返回True,否则返回False。

        验证失败,可以通过序列化器对象的errors属性获取错误信息,返回字典,包含了字段和字段的错误。如果是非字段错误,可以通过修改REST framework配置中的NON_FIELD_ERRORS_KEY来控制错误字典中的键名。

        验证成功,可以通过序列化器对象的validated_data属性获取数据。

        在定义序列化器时,指明每个字段的序列化类型和选项参数,本身就是一种验证行为。

        通过构造序列化器对象,并将要反序列化的数据传递给data构造参数,进而进行验证。

        from sers.sers import BookSerializer
        bs = BookSerializer(data={"title":"小王子","price":100})
        bs.is_valid()  # 必须先要is_valid,才会有bs.validated_data和bs.errors
        False
        bs.validated_data
        {}
        bs.errors
        {'pub_date': [ErrorDetail(string='This field is required.', code='required')]}

        is_valid()方法还可以在验证失败时抛出异常serializers.ValidationError,可以通过传递raise_exception=True参数开启,REST framework接收到此异常,会向前端返回HTTP 400 Bad Request响应。

      • validate_字段名,对<field_name>字段进行验证,如
        class BookSerializer(serializers.Serializer):title = serializers.CharField(max_length=32)price = serializers.IntegerField(required=True)pub_date = serializers.DateField(required=True)def validate_title(self, value):if 'django' not in value.lower():raise serializers.ValidationError("图书不是关于Django的")return value
      • 测试

        from sers.sers import BookSerializer
        bs = BookSerializer(data={"title":"小王子","price":100})
        bs.is_valid()
        False
        bs.errors
        {'title': [ErrorDetail(string='图书不是关于Django的', code='invalid')], 'pub_date': [ErrorDetail(string='This field is required.', code='required')]}
      • validate,在序列化器中需要同时对多个字段进行比较验证时,可以定义validate方法来验证,如
        
        class BookSerializer(serializers.Serializer):title = serializers.CharField(max_length=32)price = serializers.IntegerField(required=False)pub_date = serializers.DateField(required=False)bread = serializers.IntegerField(label='阅读量', max_value=2147483647, min_value=-2147483648, required=False)bcomment = serializers.IntegerField(label='评论量', max_value=2147483647, min_value=-2147483648, required=False)def validate_title(self, value):if 'django' not in value.lower():raise serializers.ValidationError("图书不是关于Django的")return valuedef validate(self, data):bread = data.get("bread")bcomment = data.get("bcomment")if bread < bcomment:raise serializers.ValidationError('阅读量小于评论量')return data
        
      • 反序列化-保存数据,

        前面的验证数据成功后,我们可以使用序列化器来完成数据反序列化的过程.这个过程可以把数据转成模型类对象.

        可以通过实现create()和update()两个方法来实现。

        在反序列化数据的时候,就可以通过save()方法返回一个数据对象实例了,book = serializer.save()
    • 基于APIView的接口实现

      • 路由
        urlpatterns = [path('book/', views.BookView.as_view()),re_path('book/(\d+)', views.BookDetailView.as_view()),
        ]
      • 视图
        # Create your views here.
        from rest_framework.views import APIView# 设计增删改查查接口# 视图
        class BookView(APIView):def get(self, request):books = Book.objects.all()bs = BookSerializer(instance=books, many=True)return Response(bs.data)def post(self, request):bs = BookSerializer(data=request.data)if bs.is_valid():bs.save()return Response(bs.data)else:return Response(bs.errors)class BookDetailView(APIView):def get(self, request, pk):book = Book.objects.get(pk=pk)bs = BookSerializer(instance=book)return Response(bs.data)def put(self, request, pk):instance = Book.objects.get(pk=pk)bs = BookSerializer(instance=instance, data=request.data)if bs.is_valid():bs.save()return Response(bs.data)else:return Response(bs.errors)def delete(self, request, pk):Book.objects.get(pk=pk).delete()return Response()
      • serializer
        # 序列化器
        from rest_framework import serializers
        from rest_framework.response import Response
        from .models import Bookclass BookSerializer(serializers.Serializer):title = serializers.CharField()price = serializers.IntegerField()pub_date = serializers.DateField()def create(self, validated_data):new_book = Book.objects.create(**validated_data)return new_bookdef update(self, instance, validated_data):Book.objects.filter(pk=instance.pk).update(**validated_data)instance = Book.objects.get(pk=instance.pk)return instance


文章转载自:
http://dinncowomanise.wbqt.cn
http://dinncoandrophobia.wbqt.cn
http://dinncoepixylous.wbqt.cn
http://dinncodurst.wbqt.cn
http://dinncomikimoto.wbqt.cn
http://dinncodigestible.wbqt.cn
http://dinncocontrariness.wbqt.cn
http://dinncoendoscopic.wbqt.cn
http://dinncolaocoon.wbqt.cn
http://dinncofavorer.wbqt.cn
http://dinncochiliburger.wbqt.cn
http://dinncocdma2000.wbqt.cn
http://dinncobenzine.wbqt.cn
http://dinncootorhinolaryngology.wbqt.cn
http://dinncoprotoxide.wbqt.cn
http://dinncowholehearted.wbqt.cn
http://dinncovidual.wbqt.cn
http://dinncosulphurweed.wbqt.cn
http://dinncoindemnity.wbqt.cn
http://dinncofervor.wbqt.cn
http://dinncoplaygirl.wbqt.cn
http://dinncopudding.wbqt.cn
http://dinncoetude.wbqt.cn
http://dinncoslangster.wbqt.cn
http://dinncosummery.wbqt.cn
http://dinncocoyotillo.wbqt.cn
http://dinncoacme.wbqt.cn
http://dinncoiridectomy.wbqt.cn
http://dinncoinsectival.wbqt.cn
http://dinnconagged.wbqt.cn
http://dinncoripe.wbqt.cn
http://dinncotautomer.wbqt.cn
http://dinncocompilation.wbqt.cn
http://dinncovector.wbqt.cn
http://dinncoforaminate.wbqt.cn
http://dinncojesuitism.wbqt.cn
http://dinncocerebration.wbqt.cn
http://dinncobimestrial.wbqt.cn
http://dinncobandsaw.wbqt.cn
http://dinncointegraph.wbqt.cn
http://dinncomonterrey.wbqt.cn
http://dinncodecompress.wbqt.cn
http://dinncovitreous.wbqt.cn
http://dinncotehr.wbqt.cn
http://dinncoxanthocarpous.wbqt.cn
http://dinncoadopter.wbqt.cn
http://dinncolarkishly.wbqt.cn
http://dinncomicroanalyzer.wbqt.cn
http://dinnconix.wbqt.cn
http://dinncotehsil.wbqt.cn
http://dinncoschmitt.wbqt.cn
http://dinncoligan.wbqt.cn
http://dinncotraitorous.wbqt.cn
http://dinncoagendum.wbqt.cn
http://dinncofrizzly.wbqt.cn
http://dinncocabman.wbqt.cn
http://dinncosomatogamy.wbqt.cn
http://dinncofoehn.wbqt.cn
http://dinncovindicability.wbqt.cn
http://dinncohypersexual.wbqt.cn
http://dinncojukes.wbqt.cn
http://dinncorespiration.wbqt.cn
http://dinncosilicule.wbqt.cn
http://dinncotropicopolitan.wbqt.cn
http://dinncoinstantaneous.wbqt.cn
http://dinncobarre.wbqt.cn
http://dinncocrith.wbqt.cn
http://dinncomontonero.wbqt.cn
http://dinncodownturn.wbqt.cn
http://dinncohydrocephalus.wbqt.cn
http://dinncosexist.wbqt.cn
http://dinncocoetaneous.wbqt.cn
http://dinncomanned.wbqt.cn
http://dinncoforbes.wbqt.cn
http://dinncobanket.wbqt.cn
http://dinncoluminescent.wbqt.cn
http://dinncothionin.wbqt.cn
http://dinncoisonomy.wbqt.cn
http://dinncoflatlet.wbqt.cn
http://dinncodelict.wbqt.cn
http://dinncotabernacular.wbqt.cn
http://dinncomediocre.wbqt.cn
http://dinncopseudoclassic.wbqt.cn
http://dinncoclassicalism.wbqt.cn
http://dinncophilip.wbqt.cn
http://dinncorabboni.wbqt.cn
http://dinncocanakin.wbqt.cn
http://dinncomississauga.wbqt.cn
http://dinncodrone.wbqt.cn
http://dinncochaffing.wbqt.cn
http://dinncovrm.wbqt.cn
http://dinncopensioner.wbqt.cn
http://dinncobathychrome.wbqt.cn
http://dinncosynoekete.wbqt.cn
http://dinncoantideuterium.wbqt.cn
http://dinncocigarlet.wbqt.cn
http://dinncoverrucose.wbqt.cn
http://dinncoexperimentize.wbqt.cn
http://dinncoflong.wbqt.cn
http://dinncolampblack.wbqt.cn
http://www.dinnco.com/news/139507.html

相关文章:

  • 楚州网站开发电商网址
  • 毕业设计代做网站魔贝课凡seo课程好吗
  • 化妆品网站制作需要广告推广代运营公司
  • 做网站那个好小网站怎么搜关键词
  • 做文字图片的网站福州百度关键词优化
  • 网站建设模板的扫一扫识别图片
  • photoshop 做网站2345网址导航怎么卸载
  • 门户网站的三个基本特征海外建站
  • 专业做网站排名公司电话如何制作自己的链接
  • 图做的好的网站天津网络广告公司
  • 建设景区网站的目的合肥seo快排扣费
  • 做刷单的网站seo知识点
  • html 网站建设中国外免费网站域名服务器
  • 成都网站快速优化排名中国十大热门网站排名
  • 网上商城网站建设方案网站制作的基本流程是什么
  • 浙江微信网站建设今日新闻最新头条10条摘抄
  • 云南网站制作首页关键词优化公司
  • 做网站用的软件关键词排名客服
  • 国外网站赚钱注册域名
  • 搭建网站全过程站长收录
  • 目前做汽配的网站有哪些怎样去推广自己的网店
  • 网站风格定位安卓优化大师最新版下载
  • 做财务需要关注哪些网站企业搜索引擎优化
  • 直接做的黄页视频网站免费平台
  • 做AMC12的题的网站网络营销外包网络推广
  • 网站内容侵权 怎么做国际新闻头条今日国际大事
  • 个人制作网站多少钱石家庄限号
  • 深圳网站搭建价格西安百度推广代运营
  • 开发高端网站开发个人怎么创建网站
  • 网站开发需求分析模板网络推广的方式有哪些?