回顾
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 使用apiVIew写一个接口,使用postman掉通即可
2 继续写bbs项目