Django

在这里插入图片描述
MTV
Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
T 代表模板 (Template):负责如何把页面展示给用户(html)。
V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
在这里插入图片描述

django 执行流程
1浏览器访问应用
2通过路由系统找到对应的视图函数
3 对数据库进行操作
4 返回页面给浏览器

简述Django请求生命周期
1.当用户在浏览器中输入url时,浏览器会生成请求头和请求体发送给服务端。
2.url经过Django中的wsgi,再经过Django的中间件,最后Url到路由映射表,在路由中一条条匹配;一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配。
3.视图函数根据客户端的请求查询相应的数据,返回给Django,让Django把客户端想要的数据作为一个字符串返回给客户端。
4.客户端浏览器接受到返回的数据,经过渲染后显示给用户。

还可以这样理解: 一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

#1.wsgi,请求封装后交给web框架 (Flask、Django)
#2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -
#3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
#4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 -
#5.中间件,对响应的数据进行处理。
#6.wsgi,将响应的内容发送给浏览器。

在这里插入图片描述
什么是框架
本质是socket套接字,所有框架都是对socket进行不同封装,程序员不用做一些重复性工作,专注逻辑开发,提高效率。

orm是什么?优势?
Django的一个强大功能就是它的对象关系映射ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库;
通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。
在更换数据库的时候,只需要更换数据库的引擎配置信息即可,无需重写数据库的语句。

Django重定向你是如何实现的?用的什么状态码?

  • 使用HttpResponseRedirect
  • redirect 和 reverse
  • 状态码:302,301

Django中MIDDLEWARES中间件的作用和应用场景?
中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。
简单的来说中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作
例如:
1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确token值
2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。
3.当有用户请求过来时,判断用户是否在白名单或者在黑名单里

django中csrf的实现机制?
1.django第一次响应来自某客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中,同时,后端把这个token放到cookie中交给前端页面;
2.下次前端需要发起请求的时候把这个token值加入到请求数据或者头信息中,一起传给后端
3.后端校验前端请求带过来的token和SESSION里的token是否一致。


列举Http请求中常见的请求方式
1.GET:向特定的路径资源发出请求
2.POST:向指定路径资源提交数据进行处理请求(一般用于提交表单或者上传文件)
数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
3.OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法
允许客户端查看服务器的性能,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
4.HEAD:向服务器索与GET请求相一致的响应,只不过响应体将不会被返回
这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
5.PUT:从客户端向服务器传送的数据取代指定的文档的内容
6.DELETE :请求服务器删除指定的页面
7.TRACE:会回显服务器收到的请求,主要用于测试或诊断
8.CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务
状态码:
1XX-信息类(Information),表示收到Web浏览器请求,正在进一步的处理中
2XX-成功类(Successful),表示用户请求被正确接收,理解和处理例如:200 OK
3XX-重定向类(Redirection),表示请求没有成功,客户必须采取进一步的动作。
4XX-客户端错误(Client Error),表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用的文档不存在。
5XX-服务器错误(Server Error)表示服务器不能完成对请求的处理:如 500

HTTP通信机制
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:

1、建立TCP连接(回头记录下TCP的三次握手原理)

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更深层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

2、Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令

例如:GET/sample/hello.jsp HTTP/1.1。

3、 Web浏览器发送请求头信息

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

4、Web服务器应答

客户机向服务器发出请求后,服务器会客户机回送应答,
HTTP/1.1 200 OK
应答的第一部分是协议的版本号和应答状态码。

5、Web服务器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。

6、Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

7、Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。


HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。
HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

HTTPS和HTTP的区别:
a. https协议需要到ca申请证书,一般免费证书很少,需要交费。
b. http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。
c. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
d. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值