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

天翼云主机 网站服务器打开网站无反应怎么做

天翼云主机 网站服务器,打开网站无反应怎么做,四川省建设工程质量监理协会网站,代码做网站的软件作用: 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_length32,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(instanceNone, dataempty, **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(pk1) 构造序列化器对象 from .serializers import BookSerializer bookSer BookSerializer(instancebook) 获取序列化数据,通过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(pkid)bs BookSerializer(instancebook)return Response(bs.data) 如果要被序列化的是包含多条数据的查询集QuerySet可以通过添加manyTrue参数补充说明 class BookView(APIView):def get(self, request):# book Book.objects.get(pk1)books Book.objects.all()bs BookSerializer(instancebooks, manyTrue)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(stringThis field is required., coderequired)]} is_valid()方法还可以在验证失败时抛出异常serializers.ValidationError可以通过传递raise_exceptionTrue参数开启REST framework接收到此异常会向前端返回HTTP 400 Bad Request响应。 validate_字段名对field_name字段进行验证如 class BookSerializer(serializers.Serializer):title serializers.CharField(max_length32)price serializers.IntegerField(requiredTrue)pub_date serializers.DateField(requiredTrue)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的, codeinvalid)], pub_date: [ErrorDetail(stringThis field is required., coderequired)]} validate在序列化器中需要同时对多个字段进行比较验证时可以定义validate方法来验证如 class BookSerializer(serializers.Serializer):title serializers.CharField(max_length32)price serializers.IntegerField(requiredFalse)pub_date serializers.DateField(requiredFalse)bread serializers.IntegerField(label阅读量, max_value2147483647, min_value-2147483648, requiredFalse)bcomment serializers.IntegerField(label评论量, max_value2147483647, min_value-2147483648, requiredFalse)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(instancebooks, manyTrue)return Response(bs.data)def post(self, request):bs BookSerializer(datarequest.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(pkpk)bs BookSerializer(instancebook)return Response(bs.data)def put(self, request, pk):instance Book.objects.get(pkpk)bs BookSerializer(instanceinstance, datarequest.data)if bs.is_valid():bs.save()return Response(bs.data)else:return Response(bs.errors)def delete(self, request, pk):Book.objects.get(pkpk).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(pkinstance.pk).update(**validated_data)instance Book.objects.get(pkinstance.pk)return instance
http://www.w-s-a.com/news/418457/

相关文章:

  • 快速网站建设公司哪家好优秀的网站建设
  • 网站开发的自适应wordpress搜索词结果按文章标题
  • 微网站是用什么开发的wordpress中英文主题
  • 纯静态网站怎么做淄博seo开发
  • 江西新农村建设权威网站盐步网站制作
  • 网站ui设计例子怎么做打鱼网站
  • 在1688做公司网站wordpress category
  • 单页面 网站 模板网站代理公司
  • 手机网站底部电话代码网站后台点击添加图片没有反应
  • 龙岩建设局网站声明自学制作网站难不难
  • 济南网站优化小黑godaddy中文网站开发
  • 做微课常用的网站广州seo优化推广
  • 主机屋如何做网站电脑网页游戏大全
  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计