小实训day01

一、 简述vue和Django的工作流程,Django中间件的作用以及请求顺序

前端向后端服务器发送HTTP请求,
服务器:接收http请求报文,解析报文,产生request,通过wsgi协议传给框架程序
框架程序:接收http请求对象request,中间件处理(拦截请求),路由处理,具体视图		处理,业务处理,再进行中间层处理(拦截响应),返回给服务器程序的是一个		   response的对象
服务器程序:通过response对象构造一个http响应报文,在传回客户端

二、 聊聊你对三次握手 和 四次挥手的理解

三次握手:1.客户端向服务端请求连接
		2.服务端同意连接
		3.客户端连接服务端
		
四次挥手:1.客户端向服务端请求断开连接
		2.服务端同意
		3.服务端请求断开
		4.客户端发送确认服务器的断开

三、 HTTP报文是什么样子的,每部分如何来区分,每部分的作用是什么

包含 请求头,请求行,请求体
	请求头:空行以上,定义http协议的属性
	请求行:第一行,申明请求方法,路由,当前的版本号
	请求体:空行以下,传递参数

四、 HTTP 请求常见的请求方式有哪些?他们都是做什么用的?

get : 请求数据
post : 发送数据
put : 修改数据
delete : 删除数据

五、 十个HTTP请求状态码

200 OK 请求没问题
201 Created 创建返回成功
301 永久重定向
302 临时重定向
400 发送了一个错误的请求
401 未授权
404 请求的资源不存在
405 请求的方法不正确
500 服务器内部错误
501 请求超出服务器的能力范围
502 错误网关
503 服务出错

六、 自己找资料,完成Django中间件的整理(中间件的调用方式,中间件是如何使用的,中间件的5大方法)

中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。
中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。

五大方法:
1).process_request: 处理请求前:在每个请求上,request对象产生之后,url匹配之前调用,返回None或HttpResponse
2).process_view:处理视图前:在每个请求上,url匹配之后,视图函数调用之前调用,返回None或HttpResponse对象。
3).process_response:处理响应后:视图函数调用之后,所有响应返回浏览器之前被调用,在每个请求上调用,返回HttpResponse对象。
4).process_exception:异常处理:当视图抛出异常时调用,在每个请求上调用。
5).process_template_response:函数是在视图函数执行完后立即执行的,返回一个HttpResponse对象


七、来说说MVC和MVT吧

分⼯、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。
MVC:
	M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进⾏增、删、改、查操作。
	V全拼为View,⽤于封装结果,⽣成⻚⾯展示的html内容。
	C全拼为Controller,⽤于接收请求,处理业务逻辑,与Model和View交互,	返回结果。
MVT:
M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进⾏数据处理。
V全拼为View,与MVC中的C功能相同,接收请求,进⾏业务处理,返回应答。
T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html

八、尝试下正则匹配路由,匹配以下⼏个路由

​ Index1/re=五位数的⼩写字⺟/

	re_path('test1/([a-z]{5})/', test4.as_view()),  # 匹配五个小写字母

​ Index2/ re= a开头的不⼤于⼋位的单词/

	re_path('test2/(a[A-Za-z]{,7})/', test4.as_view()),  # 匹配a开头不大于八位的单词

Index3/re=不存在特殊字符的任意⼀个字符/

	re_path('test3/([A-Za-z0-9]+)/', test4.as_view()),  # 匹配不存在特殊字符

九、创建⼀个user表

​ 1.post请求⽤formdata发送数据添加(⾄少添加三条数据)

    def post(self,request):
        name = request.POST.get('name')
        User.objects.create(name=name)
        return HttpResponse({'添加成功'})

​ 2.put请求⽤json发送数据修改(修改其中⼀条数据)

    def put(self,request):
        data = request.body
        a = json.loads(data)
        id = a.get('id')
        name = a.get('name')
        User.objects.filter(id=id).update(name=name)
        return JsonResponse({'msg':'修改成功'})

​ 3.get请求获取所有的⽤户数据,⽤HTTPResponse返回所有的查询结果集。

    def get(self,request):
        a = User.objects.all()
        data = [{"id": i.id, "name": i.name} for i in a]
        return HttpResponse(data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值