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各个版本之间的区别

 

原文地址:https://www.cnblogs.com/DEJAVU888/p/14893714.html