Django 必会面试题总结

文章转自
https://blog.csdn.net/weixin_43063753/article/details/85559540

目录
在这里插入图片描述
欢迎关注
1 列举Http请求中常见的请求方式
2 谈谈你对HTTP协议的认识。1.1 长连接
3 简述MVC模式和MVT模式
4 简述Django请求生命周期
5 简述什么是FBV和CBV
6 谈一谈你对ORM的理解
7 rest_framework 认证组件的流程
8 什么是中间件并简述其作用
9 django 中间件生命周期
10 django中怎么写原生SQL
11 如何使用django orm批量创建数据

12 命令migrate 和makemigrations的差别
14 常用视图响应的方式是什么?
15 HTTP响应常见状态码分类
16 路由匹配原则是什么?
17 缓存系统类型有哪些
18 解决跨域的常用方式是什么?
19 信号的作用是什么?

20 Django的Model的继承有几种形式,分别是什么
21 Django中查询queryset时什么情况下用Q
22 Django中想验证表单提交是否格式正确需要用到Form中的哪个函数
23 orm如何取消级联
24 Django中如何读取和保存session,整个session的运行机制是什么
25 简述Django对http请求的执行流程
25 Django中当用户登录到A服务器进入登陆状态,下次被nginx代理到B服务器会出现什么影响
26 跨域请求Django是如何处理的
27 查询集的两大特性?什么是惰性执行
28 查询集返回的列表过滤器有哪些
29 如何获取django urlpatterns里面注册的所有url?
30 django路由系统中include是干嘛用的?
31 django2.0中的path与django1.xx里面的url有什么区别?
32 urlpatterns中的name与namespace有什么作用?你是如何使用的?
34 如何给一个字段设置一个主键?
35 如何设置一个带有枚举值的字典?
36 DateTimeField类型中的auto_now与auto_now_add有什么区别
37 values()与values_list()有什么区别?
38 selected_related与prefetch_related有什么区别?
39 当删除一个外键的时候,如何把与其关联的对应关系删除
40 class Meta中的元信息字段有哪些
41 多对多关联的表,如何插入数据?如何删除数据?如何更新数据?
42 django的M2M关系,如何手动生成第三张表?
43 在Django中,服务端给客户端响应信息有几种方式?分别是什么?
44 在视图函数中,常用的验证装饰器有哪些?
45 如何给一个视图函数加上缓存?
46 web框架的本质是什么?
47 创建Django工程、Django app、以及运行的命令
48 django中csrf的实现机制
49 Django App的目录结构
50 Django 获取用户前端请求数据的几种方式
51 描述下 自定义simple_tag
52 什么是Cookie、如何获取、设置Cookie
53 什么是session,与cookie的对比、设置、获取、清空session
54 什么是CSRF,及防范方式
55 get请求和post请求的区别
56 图书管理系统的表结构是怎么设计的?
57 WSGI / uwsgi/ uWSGI区分
59 解释blank和null
60 QueryDict和dict区别
61 谈谈你对restful规范的认识?
62 Django 本身提供了 runserver,为什么不能用来部署? 
63 Tornado 的核是什么? 
64  Django重定向你是如何实现的?用的什么状态码? 
65 Django中如何加载初始化数据 
66 简述Django下的(内建)缓存机制

反回顶部
1 列举Http请求中常见的请求方式
HTTP请求的方法:
HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式

注意:
1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。
GET

向特定的路径资源发出请求

注意:GET方法不应当被用于产生“副作用”的操作中,例如在WebApplication中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

  POST

向指定路径资源提交数据进行处理请求(一般用于提交表单或者上传文件)

数据被包含在请求体中,POST请求可能会导致新的资源的建立和/或已有资源的修改。Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

OPTIONS               

返回服务器针对特定资源所支持的HTTP请求方法

允许客户端查看服务器的性能,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

 HEAD

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回

这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

 PUT

从客户端向服务器传送的数据取代指定的文档的内容

 DELETE 

请求服务器删除指定的页面

 TRACE

回回显服务器收到的请求,主要用于测试或诊断

 CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务

反回顶部
2 谈谈你对HTTP协议的认识。1.1 长连接
HTTP是一个属于应用层的面向对象的协议
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
基于TCP/IP
双方建立通信的顺序,以及Web页面显示需要 处理的步骤,等等。像这样把与互联网相关联的协议集合起来总称为 TCP/IP。而http协议是基于TCP/IP协议之上的应用层协议。
基于请求-响应模式
HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并 返回
无状态保存
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成 如此简单的。可是,随着Web的不断发展,因无状态而导致业务处理变得棘手 的情况增多了。比如,用户登录到一家购物网站,即使他跳转到该站的 其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能 够掌握是谁送出的请求,需要保存用户的状态。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能, 于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管 理状态了。

反回顶部
3 简述MVC模式和MVT模式
所谓MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求

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

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

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

反回顶部
4 简述Django请求生命周期
一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
#1.wsgi,请求封装后交给web框架 (Flask、Django)
#2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -
#3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
#4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 -
#5.中间件,对响应的数据进行处理。
#6.wsgi,将响应的内容发送给浏览器。

反回顶部
更多内容请到微信公众回复:django面试题
在这里插入图片描述

内有详细答案
更多内容请到微信公众回复:django面试题
更多内容请到微信公众回复:django面试题
更多内容请到微信公众回复:django面试题
————————————————
版权声明:本文为CSDN博主「BigC哥」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43063753/article/details/85559540

猜你喜欢

转载自blog.csdn.net/bruce_van/article/details/103841983
今日推荐