django——面试题(已工作,暂停更新)

谈谈你对HTTP协议的认识。

什么是协议?

  协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准。

什么是http协议?

  http协议,是互联网中最常见的网络通信标准。

http协议的特点

  ①通信流程:断开式(无状态)

        断开式:http协议每次响应完成后,会断开与客户端的连接

        无状态:由于服务器断开了之前的连接,就无法知晓连接间的关系

  ②内容格式:消息头和消息体

列举Http请求中常见的请求方式

HTTP请求的方法:
HTTP/1.1协议*定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式 1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
注意:
1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。
2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

get请求和post请求的区别

 区别:

    get请求无消息体,只能携带少量数据

    post请求有消息体,可以携带大量数据

  携带数据的方式:

    get请求将数据放在url地址中

     post请求将数据放在消息体中

GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;
GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

简述MVC模式和MVT模式

MVC
Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。 MTV
Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值: M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
T 代表模板 (Template):负责如何把页面展示给用户(html)。
V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

简述Django请求生命周期

简述什么是FBV和CBV

FBV(function base views) 就是在视图里使用函数处理请求。
CBV(class base views) 就是在视图里使用类处理请求。 Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

谈一谈你对ORM的理解

ORM是“对象-关系-映射”的简称。
MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动

rest_framework 认证组件的流程

什么是中间件并简述其作用

django中怎么写原生SQL

F和Q的作用

values和value_list区别

如何使用django orm批量创建数据

Django中的请求生命周期

http访问流程

命令migrate 和makemigrations的差别

视图函数中,接收的请求对象常用方法和属性有哪些

常用视图响应的方式是什么?

HTTP响应常见状态码分类

路由匹配原则是什么?

缓存系统类型有哪些

解决跨域的常用方式是什么?

信号的作用是什么?

Django的Model的继承有几种形式,分别是什么

Django中查询queryset时什么情况下用Q

Django中想验证表单提交是否格式正确需要用到Form中的哪个函数

orm如何取消级联

Django中如何读取和保存session,整个session的运行机制是什么

简述Django对http请求的执行流程

Django中当用户登录到A服务器进入登陆状态,下次被nginx代理到B服务器会出现什么影响

跨域请求Django是如何处理的

查询集的两大特性?什么是惰性执行

查询集返回的列表过滤器有哪些

如何获取django urlpatterns里面注册的所有url?

django路由系统中include是干嘛用的?

django2.0中的path与django1.xx里面的url有什么区别?

urlpatterns中的name与namespace有什么作用?你是如何使用的?

如何根据urlpatterns中的name反向生成url,这样反向生成url的方式有几种?

如何给一个字段设置一个主键?

blank=True与null=True有什么区别?

如何设置一个带有枚举值的字典?

DateTimeField类型中的auto_now与auto_now_add有什么区别

values()与values_list()有什么区别?

selected_related与prefetch_related有什么区别?

当删除一个外键的时候,如何把与其关联的对应关系删除

class Meta中的元信息字段有哪些

多对多关联的表,如何插入数据?如何删除数据?如何更新数据?

django的M2M关系,如何手动生成第三张表?

如何使用原生mysql?

在Django中,服务端给客户端响应信息有几种方式?分别是什么?

在视图函数中,常用的验证装饰器有哪些?

如何给一个视图函数加上缓存?

web框架的本质是什么?

什么是MVC、什么是MTV?

创建Django工程、Django app、以及运行的命令

Django App的目录结构

简述一下Django声明周期

Django 获取用户前端请求数据的几种方式

描述下 自定义simple_tag

什么是Cookie、如何获取、设置Cookie

什么是session,与cookie的对比、设置、获取、清空session

什么是CSRF,及防范方式

django 中间件生命周期

get请求和post请求的区别

图书管理系统的表结构是怎么设计的?

图书管理系统路由系统你用到了name了吗? 为什么要使用呢?

图书管理系统的模板你是怎么用的? 重复的代码怎么解决?

MVC和MTV分别是什么?

WSGI / uwsgi/ uWSGI区分

如何使用django加密

解释blank和null

QueryDict和dict区别

上一篇:django 2.接口之工作原理


下一篇:Django创建工程项目以及工作原理