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

大连h5网站开发电商网站设计工作内容

大连h5网站开发,电商网站设计工作内容,城乡建设局,网站推广优化外包公司哪家好rest_framework接口开发流程及接口功能组成 使用restframework框架开发接口#xff0c;方式应该有6、7种#xff0c;每个人的习惯不同#xff0c;用的方法也不一样#xff0c;再次不再一一详述。 我比较常用#xff1a;ModelSerializerGenericAPIView 原因是用视图函数装饰…rest_framework接口开发流程及接口功能组成 使用restframework框架开发接口方式应该有6、7种每个人的习惯不同用的方法也不一样再次不再一一详述。 我比较常用ModelSerializerGenericAPIView 原因是用视图函数装饰器、视图类继承APIView、或者混入Mixin这三种封装层次有点低用一个封装层次低的接口通常意味着你需要写更多的代码后期也需投入更多的精力去维护它当然好处是写出来的代码比较容易看懂而使用ViewSets(视图集)则刚好相反ViewSets封装了GenericAPIView它显得有些画蛇添足过高的封装层次可能会让你感到云里雾里当然好处是用熟了之后会很爽。 所以在能理解和接受的程度与接口封装的层次两方面来权衡我选择了GenericAPIView来写视图ModelSerializer当然也比单纯的Serializer更好用写更少的代码做更多的事。 1 Django rest_framework开发的一个符合RESTful标准的接口组成及功能 Django框架它整个采用的是MVT的架构这三部分各司其职由M负责与数据库的实际交互V负责业务逻辑T负责接受请求与展示响应(实际就是前端)。那我们可以这么理解只要有一个东西它具备了接受请求(入参)与展示响应(返回值)的功能我们就可以把它当成T因为它具备了T的功能。前后端不分离的时候一切都是那么的美好。 当前后端分离的时候我们突然发现T不见了。那么谁来充当T的角色呢没错是Serializer(负责接受请求与展示响应)。这样一来前后端分离与不分离就有了一个统一的架构也即一个接口通常由三大主要的部分组成模型、视图、序列化器。 1.1 模型M(models.py) 在Django框架的MVT架构中M承担了与数据库进行交互的功能但是由于我们用的是ORM所以只需要将python对象映射到数据模型即可也就是定义python对象并在该对象中声明相应的字段。需要注意的一点是在定义python对象之前需要先绘制ER图明确实体间的关系确保每一个实体都至少遵循第三范式(3NF)。 说明前后端分离与不分离models并没有什么区别1.2 序列化器T(Serializers.py) 前后端不分离的时候T其实就是前端接受请求并返回响应数据。 前后端分离的时候序列化器承担了这个功能接受前端请求返回响应数据。 如果使用ModelSerializer来定义序列化器那么它大概长这个样子 序列化器 from rest_framework import serializers from .models import * import reclass MyModelSerializer(serializers.ModelSerializer):MyModel 序列化器class Meta:model 模型fields 接口入参extra_kwargs 入参的约束model MyModelfields (name, mobile)extra_kwargs {mobile: {write_only: True,min_length: 8,max_length: 16,}}def validate_name(self, name):对name的校验if User.objects.filter(usernameusername).count():raise serializers.ValidationError(该用户名已被注册)return namedef validate_mobile(self, mobile):判断手机号格式判断手机号是否已注册# 注册if User.objects.filter(mobilemobile).count():raise serializers.ValidationError(该手机号已被注册)# 判断手机号码格式是否有误REGEX_MOBILE 1[358]\d{9}$|^147\d{8}$|^176\d{8}$# 格式if not re.match(REGEX_MOBILE, mobile):raise serializers.ValidationError(手机号格式有误)return mobiledef create(self, validated_data):validated_data 通过校验的数据 是一个字典Serializer中重写create可以对数据做一些修改最终将返回一个实例 该实例会给到对应的视图Viewuser super().create(validated_data)# Your codereturn user在序列化器Serializer中容易让人感到困惑的可能就是前端字段校验这一块。其实我们回到Serializers的功能接受前端请求返回响应数据就能明白为什么它要序列化与反序列化。 序列化python对象转变为可传输(可被用于前端渲染)的JSON格式(也可能是xml等)字符串究其原因是因为我们用的ORM第一步ORM读数据拿出来的是一个查询集(set对象)需要把它变成前端喜欢的样子。反序列化字符串变为python对象。从前端得到的入参必然是字符串格式想要把它存到数据库里还得靠ORM但是ORM喜欢的是python对象所以需要一个反序列化的过程。 在反序列化的过程中我们不希望用户输入一些非法的参数所以要在Serializer中定义入参的约束与自定义的校验方式校验通过则返回一个模型的实例给视图否则返回错误信息。 这就是Serializer的功能与Model及View之间的关系。 1.3 视图V(views.py) 模型和序列化器固然重要但是视图才是核心因为通常情况下业务逻辑都集中在views中由视图完成。 在视图中你可以通过重写get/create方法完成业务逻辑。 如果你像我一样使用的是GenericAPIView来写视图函数那么你的View应该长这个样子 class MyModelCreateView(generics.CreateAPIView):创建视图# permission_classes [permissions.IsAuthenticated]queryset MyModel.objects.all()serializer_class MyModelSerializerdef post(self, request, *args, **kwargs):重写post 四核可以不用重写serializer_data MyModelSerializer(datarequest.data)if serializer_data.is_valid():return super().post(request, *args, **kwargs)else:return Response(serializer_data.errors)def create(self, request, *args, **kwargs):重写create 写自己的业务逻辑如果继承的是ListAPIView 就重写create# 获取前端传入的数据field request.POST.get(xx)# Your codereturn JsonResponse(data{data: data,msg: OK,code: 1,},safeFalse) 重写create/get方法时通过reques获取从前端传过来的入参拿到入参之后你就可以写自己的业务逻辑了。 2 Django DRF 接口开发步骤 模型设计需要注意关系规范化序列化器需要知道哪些是入参分别需要怎样的约束视图写业务逻辑、权限配置、过滤查询分页等 我通常是先写模型然后是序列化器最后再写业务逻辑以及接口的其他功能每个人的方法可能不同也就不详述了。
http://www.w-s-a.com/news/315212/

相关文章:

  • 网站服务器镜像微商做网站网站
  • 十大旅游电子商务网站网上定做衣服
  • 怎样进行网站备案上海发布公众号app
  • 网站后台模板论坛网站优化招商
  • 个人网站设计作品能用VUE做网站
  • 网站建设预付阿里云域名备案查询
  • 苏州本地网站免费咨询医生的软件
  • 个人网站做废品回收福建网站开发招聘
  • wordpress网站备案学设计常用的网站
  • 网站建设的频道是什么网站用什么开发软件做
  • 电子商务网站建设与规划总结外链查询网站
  • 西安网站品牌建设做网站需要的东西
  • 网站外围网站怎么做移动端网站开发项目
  • 做网站只做前端可以用吗知更鸟免费 wordpress
  • html5 微信网站主流开发技术标准网站搭建费用
  • 加强统计局网站的建设和管理广州微信网站建设价格
  • 华宁网站建设设计公司 网站
  • 简历网站免费怎么查在哪个网站做的备案
  • 响应式网站 价格网站用哪些系统做的比较好用
  • 高端网站案例360做的网站
  • 瑞安地区建设网站公众号开发者工具是干嘛的
  • 请解释网站开发的主要流程.wordpress主体上传
  • 网站方案组成要素饰品公司网站建设方案
  • 网站改版被降权赣州景文网络科技有限公司
  • 吉林省网站建设推广图片模版
  • 如何做网站热力图佛山 网站关键词优化
  • 个人网站建设论文中期报告申报网站建设理由 模板
  • 岫岩做网站软件开发和app开发的区别
  • 邯郸质量一站式服务平台上线如何做国外销售网站
  • 内蒙古工程建设协会网站sem优化策略