• DAY 63 drf01


    1-Web应用
    -bs和cs架构:http请求交互
       -mysql,redis:典型的cs架构的软件
       -docker,es:http协议,符合restful规范
       -bs架构好处,客户端不用更新
      -bs本质也是cs,socket
       -一个线程处理一个连接
    2-Http协议
    -请求协议:请求首行,请求头,请求体
       -响应协议:响应首行,响应头,响应体
       -特点:
      -无状态无连接:会话保持---cookie---session---token
           -基于请求响应:长轮询,websocket协议
           -基于tcp/ip之上的应用层
       -http版本区别

    3-Web框架
    -写了一些底层代码,只让开发者关注业务逻辑,在固定的位置写固定代码,完成对一次http请求的处理

    4-Django简介
    -python:django,flask,sanic,fastapi,tornado,webpy
       -go:beego,gin....
       -java:spring一统天下,ssh,ssm,springboot,springcloud
    -版本:1.x  2.2.2  3.x
       -MTV:
       -MVC:
       -mvp,mvvm,mvvc(架构,mysql多版本并发控制)
       
    5 路由
    -url,path,re_path
       -四个参数('地址,正则表达式',函数内存地址,默认值,别名)
       -有名分组,无名分组
       -路由分发
       -反向解析:视图函数中,模板中使用
       -名称空间(多个app路由名重名)
       -5个转换器
       -自定义转换器(一般不用)
    6 视图层
    -视图函数,视图类
       -请求对象(一堆,能够拿出http请求的所有东西)
       -响应对象(四件套,本质都是HttpResponse)
      -响应头加东西
           -加cookie
           
    7 模板层
    -模板语法
      {{}}
      {%%}
      . 深度取值
       
       dic['name']
       dic.get('name')
       test
       
       -模板渲染
       # ================================django模板修改的视图函数
       # from django.template import Template,Context
       # now=datetime.datetime.now()
       # t=Template('<html><body>现在时刻是:<h1>{{current_date}}</h1></body></html>')
       # #t=get_template('current_datetime.html')
       # c=Context({'current_date':str(now)})
       # html=t.render(c)
       #
       # return HttpResponse(html)
       
       render(request,'模板',context)
       # 本质是
       t=get_template('模板')
       c=Context({'current_date':str(now)})
       html=t.render(c) #字符串(dtl执行完成,渲染完的字符串)
       HttpResponse(html)
       
       页面静态化(bbs项目的首页静态化)
       
       -过滤器(内置)
       -标签(内置)
       -自定义标签过滤器
       -inclusion_tag
       -模板的导入和继承
       -静态文件(写死,static标签,get_static_prefix标签)
       
    -模型层
    -单表
       -多表
    -django与ajax
    -$.ajax({
           
      })
       -请求的编码格式:三种
       -ajax上传文件
       
    -分页器

    -cookie,session
    -如何设置,获取,修改,删除cookie
       -如何设置,获取,修改,删除session
    -中间件
    -process_request
       -process_response
       
    -auth
    -9个方法
       -扩展auth表

     

    1 前后端开发模式

    1 前后端混合
    2 前后端分离

     

    2 api接口和restful规范

    1 api接口
    -规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介
    2 接口文档
    -可以手动写(公司有平台,录到平台里,)
       -自动生成(coreapi,swagger)
       
    3 restful规范(10条,规定了这么做,公司可以不采用)
    -1 数据的安全保障,通常使用https进行传输
       -2 域名(会有api标识)
    https://api.example.com 尽量将API部署在专用域名
    https://127.0.0.0:8080/api/     API很简单
       -3 请求地址中带版本,或者在请求头中
    -https://127.0.0.0:8080/api/v1/
      -4 任何东西都是资源,均使用名词表示 (尽量不要用动词)
      -https://api.example.com/v1/books/
           -https://api.example.com/v1/get_all_books(不符合规范)
       -5 通过请求方式区分不同操作
      -get获取
           -post新增数据
           -put/patch:patch是局部更新,put是全部(基本上更新都用put)
           -delete:删除
      -6 在请求路径中带过滤
      https://api.example.com/v1/?name='金'&order=asc
           https://api.example.com/v1/name?sortby=name&order=asc
               
      -7 返回数据中带状态码
      -http请求的状态码(2,3,4,5
           -返回的json格式中到状态码(标志当次请求成功或失败)
      -8 返回数据中带错误信息
      -错误处理,应返回错误信息,error当做key
           
       -9 对不同操作,返回数据符合如下规范(这只是规范)
      GET /books:返回资源对象的列表(数组)[{},{},{}]
           GET /books/1:返回单个资源对象   {}
           POST /books:返回新生成的资源对象 {新增的书}
           PUT /books/1:返回完整的资源对象   {返回修改后的}
           PATCH /books/1返回完整的资源对象 {返回修改后的}
           DELETE /books/1:  返回一个空文档  
           
          {status:100,msg:查询成功,data:null}
           
       -10 返回结果中带连接
     

     

    3 postman的使用

    1 后端写好接口要测试,后端开发要使用一个工具测试接口(postman)
    2 下载---一路下一步--装成功了
    3 会发送http请求,get,post请求即可
    4 请求地址带参数,请求体带数据,请求头加数据
    5 响应cookie,响应头,响应体

     

    4 drf介绍和安装

    1 可以更方便的使用django写出符合resful规范的接口(不用也可以写符合规范的接口)
    2 是一个app
    3 pip3 install djangorestframework
    4 https://www.django-rest-framework.org/
       
       
    5 简单使用(csrf已经禁用掉了)
    #路由
    path('test/', views.Test.as_view()),
    # 视图类
    from rest_framework.views import APIView
    from rest_framework.response import Response
    class Test(APIView):
       def get(self,request):
           return Response({'name':'lqz','age':'19'})
       def post(self,request):
           return Response({'name': 'egon', 'age': '19'})
    # 注册app
    INSTALLED_APPS = [

       'rest_framework'
    ]
    # 在请求地址中访问
    http://127.0.0.1:8001/test/

    拓展

    1 http各个版本之间的区别

     

  • 相关阅读:
    Taro 自定义组件样式不生效及解决方案
    Taro 实现多行文本溢出省略效果
    taro路由传参this.$router.params获取不到值
    taro版本切换及报错解决
    fabricjs实现图片加备注文字并下载效果
    html2canvas实现DOM导出为图片(入门)
    [Vue warn]: Error in render: "TypeError: Cannot read property 'length' of null"
    svn识别不出修改的文件
    prefer-object-spread
    JAVA学习(一)——基本语法
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14893714.html
Copyright © 2020-2023  润新知