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

做网站怎么租用服务器佛山应用软件开发

做网站怎么租用服务器,佛山应用软件开发,百度营销后台,数以百万计的网店何去何从系列文章目录 Django入门全攻略#xff1a;从零搭建你的第一个Web项目Django ORM入门指南#xff1a;从概念到实践#xff0c;掌握模型创建、迁移与视图操作Django ORM实战#xff1a;模型字段与元选项配置#xff0c;以及链式过滤与QF查询详解Django ORM深度游#xff… 系列文章目录 Django入门全攻略从零搭建你的第一个Web项目Django ORM入门指南从概念到实践掌握模型创建、迁移与视图操作Django ORM实战模型字段与元选项配置以及链式过滤与QF查询详解Django ORM深度游探索多对一、一对一与多对多数据关系的奥秘与实践跨域问题与Django解决方案深入解析跨域原理、请求处理与CSRF防护Django视图层探索GET/POST请求处理、参数传递与响应方式详解Django路由与会话深度探索静态、动态路由分发以及Cookie与Session的奥秘Django API开发实战前后端分离、Restful风格与DRF序列化器详解还在写0.0… 文章目录 系列文章目录前言一、基本概念1. 什么是前后端分离2. 什么是restful风格3. 什么是接口及接口文档4. 如何阅读接口文档 二、DRF工程-django-restful-framework1. DRF工程搭建2. DRF官方文档导读 三、APIView1. APIView处理Request2. 视图的Response及json处理3. 常见状态码及Response的状态码处理 四、序列化1. 什么是json2. 什么是序列化3.QuerySet如何进行Json处理4.DRF中的序列化器 前言 在当今互联网开发中前后端分离架构和Restful风格API成为主流。本文将深入探讨前后端分离、Restful风格、接口文档的概念并重点介绍DRFDjango-Rest-Framework的使用包括APIView处理请求与响应的方法以及序列化的重要性。 一、基本概念 1. 什么是前后端分离 传统的不分离 用户在浏览器上发送请求服务器端接收到请求根据 Header 中的 token 进行用户鉴权从数据库取出数据处理后将结果数据填入 HTML 模板返回给浏览器浏览器将 HTML 展现给用户不分离的核心就是模版比如 Django 直接将返回数据到模版通过模版表单将数据返回至后端 前后端不分离的特点 业务耦合较强职责划分不明确开发成本较高服务器压力较大可提高 SEO 速度提高搜索引擎收录检索速度 现在的前后端分离 数据渲染的工作在客户端浏览器不需要服务端完成服务端专注于提供数据。那么这就要求Django框架不需要返回一个模版页面而是返回一套JSON数据而由于JSON可以在多种语言中支持是一种交互、兼容非常合适的语言格式所以现在后台常返回的数据都为JSON格式的这个过程也称作序列化 前后端分离的特点 部署解耦业务划分清晰职责更为明确开发成本较低一套后台可以支持多套前端渲染SEO 优化较差需要引入一些页面静态化手段 2. 什么是restful风格 在前后端分离的应用模式里API接口如何定义是否存在一种统一的定义方式被广大开发人员接受认可的方式呢     restful风格–指的是前后端交互的接口的格式定义 RestFul 规范建议 1. 域名要有标识 Restful 风格建议Api 服务器的域名要尽量在专用域名之下 例如百度面向用户的站点地址为 https://baidu.com 那么其后端接口地址可以为 https://api.baidu.com 或 https://baidu.com/api/ 2.路由中体现接口版本号 例如 https://api.baidu.com/v1/ https://baidu.com/api/v1/ http://openapi.tuling123.com/openapi/api/v2 3. url 建议名词复数 例如 /goods/ 获取所有商品 /infos/ /addresses/ path(news/, NewsView.as_well()) path(news/int:id, NewsView.as_well()) 4.使用合理的请求方式 例如 对应操作应该返回操作后的资源结果比如获取数据那就应该使用GET请求方式 如果是更新数据那么建议使用PUT或PATCH方法 GET获取数据POST提交数据创建数据PUT提交数据更新数据DELETE删除数据 还有三个不常用的HTTP动词: PATCH在服务器更新(更新)资源HEAD获取资源的元数据OPTIONS获取信息关于资源的哪些属性是客户端可以改变的 提供参数过滤数据 如果数据较多返回所有数据是不现实的那么可以让API提供参数进行结果返回 ?limit10指定返回记录的数量 ?offset10指定返回记录的开始位置。 ?page2per_page100指定第几页以及每页的记录数。 ?sortbynameorderasc指定返回结果按照哪个属性排序以及排序顺序。 ?animal_type_id1指定筛选条件 5.使用合理的状态码(示例如下) 200 OK - [GET] # 服务器成功返回用户请求的数据 201 CREATED - [POST/PUT/PATCH] # 用户新建或修改数据成功。 204 NO CONTENT - [DELETE] # 用户删除数据成功。 202 Accepted - [*] # 表示一个请求已经进入后台排队异步任务 ---------------------------------------------------- 400 INVALID REQUEST - [POST/PUT/PATCH] # 用户发出的请求有错误服务器没有进行新建或修改数据的操作 401 Unauthorized - [*] # 表示用户没有权限令牌、用户名、密码错误。 403 Forbidden - [*] # 表示用户得到授权与 401 错误相对但是访问是被禁止的。 404 NOT FOUND - [*] # 用户发出的请求针对的是不存在的记录服务器没有进行操作该操作是幂等的。 405 请求方式错误 406 Not Acceptable - [GET] # 用户请求的格式不可得比如用户请求 JSON 格式但是只有 XML 格式。 410 Gone -[GET] # 用户请求的资源被永久删除且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] # 当创建一个对象时发生一个验证错误。 --------------------------------------------------- 500 INTERNAL SERVER ERROR - [*] # 服务器发生错误用户将无法判断发出的请求是否成功3. 什么是接口及接口文档 API全称是Application Programming Interface即应用程序编程接口我们日常中习惯简称为“接口”。 比如我们要实现一个手机注册的功能那么相应地后台工程师就需要提供一个手机注册的接口前端开发人员在调用接口实现功能的时候只需按照既定的规则进行请求即可不需要去理解该功能的实现逻辑。有了这么一个机制就使得开发人员间的协作变得非常简洁、高效。 所以可以简单地理解为“接口决定了功能”。 接口文档又称为API文档一般是由后台开发人员所编写的用来描述系统所提供接口信息的文档。 大家都根据这个接口文档进行开发并需要一直维护和遵守。 4. 如何阅读接口文档 API接口文档一般分为接口描述、接口地址、请求方法、请求参数、响应内容、错误代码、实例几个部分 接口描述 简单描述接口的逻辑和作用。例如说明这是一个发送消息的接口、查询天气的接口 接口地址 这个地址表示的是网络地址即url我们需要调用接口url获取响应内容 请求方法 常见的请求方法为GET和POST 请求参数 用来传递信息的变量。即需要请求的字段名的名称和规则都是哪些字段字段的类型是什么是否必填字段等等 响应内容 接口返回的字段名称和规则 错误代码 对接口的错误用代码进行归类以便能快速找到错误原因解决问题 实例 实际调用时的响应的内容。 二、DRF工程-django-restful-framework 1. DRF工程搭建 安装DRF框架 pip install djangorestframework -i https://pypi.tuna.tsinghua.edu.cn/simple配置 settings.py INSTALLED_APPS [...rest_framework, ]2. DRF官方文档导读 这个框架封装了很多很多复用的功能 将请求的数据转换为模型类对象操作数据库将模型类对象转换为响应的数据如JSON格式 视图封装DRF统一封装了请求的数据为request.data以及返回数据的Response方法序列化器DRF提供了序列化器可以统一便捷的进行序列化及反序列化工作认证对用户登陆进行身份验证权限对用户权限进行认证超级用户、普通用户、匿名用户啥的限流对访问的用户流量进行限制减轻接口的访问压力过滤可以对列表数据进行字段过滤并可以通过添加django-fitlter扩展来增强支持排序来帮助我们快速指明数据按照指定字段进行排序分页可以对数据集进行分页处理异常处理DRF提供了异常处理我们可以自定义异常处理函数接口文档生成DRF还可以自动生成接口文档 三、APIView APIView是Django REST framework中的一个类用于处理HTTP请求并返回HTTP响应。APIView提供了一种基于类的视图的方式可以更方便地编写RESTful API。APIView可以处理GET、POST、PUT、DELETE等HTTP请求并根据请求的类型调用对应的方法如get()、post()、put()、delete()等。通过APIView开发者可以更加灵活地定义API的行为和逻辑。 django框架和drf框架对比 django框架django-drf框架HttpRequestRequestHttpResponseResponse查询参数 request.GETrequest.query_params路径参数路由转换器路由转换器请求头 request.METArequest.headers请求体-表单 request.POSTrequest.data请求体-非表单request.bodyrequest.data解析上传文件 request.FILESrequest.data类视图 ViewAPIViewJsonResponseResponserenderResponse 1. APIView处理Request DRF将request.POST、request.FILES,request.body的数据统一封装到了data属性中其中包含了 解析之后的文件、非文件数据对POST、PUT、PATCH请求方式解析后的数据表单类型数据、JSON类型数据 # app/views.py from rest_framework.views import APIView class ExampleView(APIView):def post(self, request):data request.data # json/form 提交的数据return Response({received data: request.data})DRF为了更准确的表示这是从连接里取得数据从而把request.GET的名字更换为了request.query_params其余操作与request.GET一样这里只是拼写更换 # app/views.py from rest_framework.views import APIView class ExampleView(APIView):def get(self, request):data request.query_params # get 的连接传参return Response({received data: request.query_params})2. 视图的Response及json处理 目前在DRF中我们所使用最多的就是Response这个方法经常使用已经序列化好的数据结合Response返回 Response(dataNone, statusNone, template_nameNone, headersNone, exceptionFalse, content_typeNone)data: 需要返回的数据 status: 状态码 headers: 头部信息 content-type: 返回数据 MIME 类型,一般不要多余设置drf 会自动根据数据进行设置需要注意的是在Response函数的第一个参数位置上这个data不能是复杂结构的数据比如ORM查询到的数据ORM的数据需要提取出来成为Python的数据类型或者使用序列化方式将其加工才可以使用Response进行返回 3. 常见状态码及Response的状态码处理 200 OK - [GET] # 服务器成功返回用户请求的数据 201 CREATED - [POST/PUT/PATCH] # 用户新建或修改数据成功。 202 Accepted - [*] # 表示一个请求已经进入后台排队异步任务 204 NO CONTENT - [DELETE] # 用户删除数据成功。四、序列化 1. 什么是json 这一种在各个编程语言中流通的数据格式可以在不同的编程语言中的进行数据传递和交互 也就是用JSON传输数据可以让不同语言之间可以跨越语言不同的鸿沟虽然 python 无法和 js 进行通信但是通过JSON就可以让两者进行数据通信所以现在常见的接口返回的数据都是JSON格式 2. 什么是序列化 序列化就是把模型层的数据返回为JSON数据集—将模型类对象转换为响应的数据如JSON格式 反序列化就是把前端发来的JSON数据类字典数据变为模型层的数据— 前端json数据–转换成 模型对象 3.QuerySet如何进行Json处理 QuerySet对象是Django-ORM中查询数据返回的类似列表的多数据集合 详细介绍QuerySet 的一篇文章Django ORM的QuerySet解锁数据库交互的魔法钥匙 返回QuerySet的过滤器方法有: all : 返回全部数据的QuerySet filter : 返回满足条件的QuerySet exclude : 返回条件之外的QuerySet对QuerySet进行手动处理 # 序列化 #query_set[object, obj2] book_set Book.objects.all()books [] # 遍历 每一个 模型对象 for book in book_set:books.append({id: book.id,btitle: book.btitle,price: book.price,bread: book.bread,bcomment: book.bcomment}) 反序列化django将前端传递的json格式的字符串数据接收并转换为模型对象这个过程称之为反序列化 对获取的json数据手动进行反序列化 #获取前端传递数据 json_dict request.data json_dict {btitle:光年price:18.8,bread:20,bcomment:200 }# 模型对象将获取的json格式数据插入 obj Book() obj.btitle json_dict[btitle] obj.price json_dict[price] obj.bread json_dict[bread] obj.bcomment json_dict[bcomment] ojb.save()4.DRF中的序列化器 DRF中给我们提供了一个实现序列化的组件也叫序列化器就是serializers。 serializers序列化组件 序列化过程可以把我们用ORM产生的QuerySet对象转换成json格式数据反序列化过程可以实现数据校验功能并把客户端发送过来的数据(前端json格式字符串)经过request.data以后变成字典再把字典转成模型存到数据库 序列化器特点 1、将复杂的数据结构与python对象之间进行转换 2、可以根据输入和输出数据的需要进行多级嵌套。 3、改变序列化输出数据的格式可以通过指定字段的source来源使用SerializerMethodField自定义方法以及使用嵌套序列化器。 4、支持可以自定义验证和转换方法反序列化时需要对客户端发送的数据进行验证。可以通过自定义validate方法进行字段或对象级别的验证还可以使用自定义的validators或DRF自带的验证器。 5、当使用嵌套序列化器后多个关联模型同时的创建和更新的行为并不明确需要显示地重写create和update方法。 普通序列化器Serializer代码示例 class BookSerializer(serializers.Serializer):btitle serializers.CharField(max_length20, label图书名称)price serializers.DecimalField(max_digits7, decimal_places2, label单价)bread serializers.IntegerField(default0, requiredFalse, label阅读量)bcomment serializers.IntegerField(default0, requiredFalse, label评论量)img serializers.ImageField(label封面图片, requiredFalse)
http://www.dnsts.com.cn/news/103736.html

相关文章:

  • 微网站一键通话wordpress自定义文章页面模板下载
  • 郑州网站推广营销wordpress 多域名 图片不显示
  • 长沙好的网站建设公司排名wordpress文章导出
  • 网站虚拟主机张店网站制作首选专家
  • 亚马逊网站建设案例分析魔兽wordpress
  • 烟台市做网站学校网站php源码|班级主页教师博客学生博客|学校网站织梦仿
  • 网站外包的恶意刷流量餐饮技术支持东莞网站建设
  • 网站开发和数据库哪个有前途如何用asp做网站
  • 做映射后 内网无法通过域名访问网站微信商城开通多少钱
  • 南昌网站建设 南昌做网站公司wordpress照相馆主题
  • 网站的首页需要什么内容wordpress 删除略缩图
  • 上海有名的网站建设公司有哪些去加网 wordpress
  • 用php做美食网站有哪些整合营销传播论文
  • 网站建设培训赚钱吗新手用jsp做网站
  • 千万别去电商公司上班百度排名优化咨询电话
  • 江阳建设集团网站旅游网站建设方案简介
  • 阿里巴巴上做网站达内学网站开发培训课程
  • 网站建设首选九零后网络快速建站视频
  • 中国电商网站排行榜郑州购物网站建设
  • 北京网站建设还公司做网站和APP需要多少钱
  • 织梦网站后台登陆河南企业建站系统信息
  • 网站开发最流行的语言建网站有哪些文件夹
  • 做网站的外包能学到什么python云服务器网站开发实例
  • 网站seo收录工具网站设置默认首页
  • 湖南专业建站按效果付贿小众电商平台有哪些
  • 门窗厂家东莞网站建设wordpress网站如何提速
  • 怎样看一个网站的信息吗快手app下载安装免费下载
  • 网站建设丷金手指专业十五wordpress文章随机缩略图
  • 做网站需要买ip地址吗互联网公司薪资待遇
  • wordpress站群主题网络实施方案