欢迎关注

目录

  • 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),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求

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

  1. M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
  2. T 代表模板 (Template):负责如何把页面展示给用户(html)。
  3. 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面试题

更多推荐

Django 必会面试题总结