知识总结2:Django常见面试题总结(持续更新)

标签: 面试必看

目录

1.对Django的认识?

2.ORM是什么?优势?

3.Django 、Flask、Tornado的对比及为什么使用Django

4.get请求和post请求的区别

5.migrate与migration的区别

6.简述django请求的生命周期?

7.简述什么是FBV和CBV

8.HTTP响应常见状态码分类

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

10.django中csrf的实现机制?

11.cookie和session的区别:

 

 


 

1.对Django的认识?

1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据
库结构、以及全功能的管理后台。
2.Django内置的ORM跟框架内的其他模块耦合程度高。
	应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;
	理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能
满足性能的要求。
4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。

 

2.ORM是什么?优势?

什么是ORM:
ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库
存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中
的对象自动持久化到关系数据库中。

优势:
1)orm的技术特点,提高了开发效,可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;
2) 不用直接SQL编码,能够像操作对象一样从数据库中获取数据

 

3.Django 、Flask、Tornado的对比及为什么使用Django

Django:python界最全能的web开发框架,各种功能完善,可维护性金和开发速度一级棒。
Flas:微框架的典范,号称python代码写得最好的项目之一。flask灵活。
Tornado:天生异步,性能强悍,诸多的功能需要自己完善。


1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlit数据库
和开发测试用的服务器给开发者提供了
超高的开发效率
2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎
3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式

 

4.get请求和post请求的区别

1.get请求在浏览器地址栏拼接明文传输,post在请求体内稍微安全点。
2.get方式提交的数据最多是1024字节,而post没有限制。
3.get可以收藏为书签,而post不可以。
4.get和post在服务端请求数据的方式不一样。

 

5.migrate与migration的区别

migrations根据检测到的模型创建新的迁移。迁移的作用,更多的是将数据库的操作,以文件的形式记录下来,方便以后检查、调用、
重做等等。


migrate 使数据库状态与当前模型集和迁移集同步。说白了,就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。
例如,新建、修改、删除数据表,新增、修改、删除某数据表内的字段等。

 

6.简述django请求的生命周期?

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

 

7.简述什么是FBV和CBV

FBV和CBV本质是一样的
基于函数的视图叫做FBV,基于类的视图叫做CBV
在python中使用CBV的优点:
1)提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
2)可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

 

8.HTTP响应常见状态码分类

在这里插入图片描述

 

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

1.使用HttpResponseRedirect:

from django.http import HttpResponseRedirect 

2.使用redirect和reverse
  状态码:301和302

301和302的区别:
相同点:都表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址

不同点:
1)301比较常用的场景是使用域名跳转。比如,我们访问 http://www.baidu.com 会跳转到https://www.baidu.com
表示旧地址A的资源已经被永久地移除了
2)302用来做临时跳转,比如未登陆的用户访问用户中心重定向到登录页面。表示旧地址A的资源还在(仍然可以访问),
这个重定向只是临时地从旧地址A跳转到地址B

 

10.django中csrf的实现机制?

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

 

11.cookie和session的区别:

1.cookie:
cookie是保存在浏览器端的键值对,可以用来做用户认证

2.session:
将用户的会话信息保存在服务端,key值是随机产生的自符串,value值时session的内容
依赖于cookie将每个用户的随机字符串保存到用户浏览器上
Django中session默认保存在数据库中:django_session表flask,session默认将加密的数据写在用户的cookie中

 

 

 

 

 

 

 

 

 

 

版权声明:本文为weixin_46833747原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46833747/article/details/107768423

智能推荐

java反编译

jvm 把Boolean类型的值flag当做int类型处理。​​​ Foo.java: 由 class 文件生成 jasm 文件:java -jar asmtools.jar jdis Foo.class > Foo.jasm  修改jasm文件: 执行反编译: java -jar jd-gui-1.6.6.jar File 打开Foo.class文件:b修改为2 重新执行java...

【学习笔记】03-v-html的学习和示例

v-html的认识和使用 示例: 显示结果: 注意:v-html是有复制的...

Java实现在线考试系统(系统介绍)

1.和现在有的考试系统有以下几种优势: a.和现在有的系统比较起来,本系统有科目、章节、老师、学生、班级等信息的管理,还有批阅试卷查看已批阅试卷等。传统的考试系统划分并不细,业务功能简单。 b.和学校的考试系统还有外面的考试系统比较起来,本系统是B/S结构,学校的考试系统一般为C/S结构,性能方面不如B/S结构,并且C/S接口需要安装客户端,客户端压力很大,我的系统只需要电脑具有浏览器,在同一局域...

计算机视觉--多视几何初步尝试

基础矩阵的原理 K和K’分别是两个相机的参数矩阵。p和p’是X在平面π的坐标表示。所以可以得出 具体计算过程 代码: #!/usr/bin/env python coding: utf-8 from PIL import Image from numpy import * from pylab import * import numpy as np from imp ...

java初学者怎么学习才可以快速入门

java初学者怎么学习才可以快速入门 一、了解JAVA 我们要知道:Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言。 Java之父:詹姆斯·高斯林 1.1 java的三个体系 Java SE(Java Platform Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境...

猜你喜欢

字段属性之主键&增删改查&自增长&唯一键约束

字段属性之主键&自增长&唯一键约束 主键 主键:primary key 主要的键 一张表中只有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复,这种称之为主键 一张表只能最多一个主键 增加主键 SQL操作中有多种方式增加主键大体分为三种 1.在创建表的时候直接在字段之后跟primary key关键字(主键本身不允许为空) 优点:非常直接:缺点:只能使用一个字段作为...

linux下 基于libmad的socket多用户mp3音频在线播放服务器

在众多大神的帮助下,这个在线播放流媒体服务器终于完成啦。。。。 这个mp3流媒体服务器设计的思路是,服务器程序server用多线程实现和多个客户端的通信(这是必然的),然后发送给客户端当前的音频列表公客户端选择,之后根据k客户端的选择给多个客户端传输相应mp3文件的数据,同时,客户端进行实时地音频解码并播放。 关于libmad开源mp3音频解码库的使用,见上一篇博客吧。。。。 在服务器程序这一端,...

Nginx

Nginx Nginx简介: Nginx是一个高性能的http和反向代理服务器,特点是有内存少,并发能力强,事实上Nginx的并发能力确实在同类型网页服务器中表现较好, Nginx用作web服务器:Nginx可以作为静态页面的web服务器,同时还支持CGI语言,但不支持java,java程序只能通过Tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受...

SpringCloud Alibaba - Sentinel入门案例(二)(流控规则 | 直接 / 关联 / 链路 / 快速失败 / Warm Up / 排队等待)

SpringCloud Alibaba - Sentinel入门案例(二)(流控规则 | 直接 / 关联 / 链路 / 快速失败 / Warm Up / 排队等待) 回溯 Sentinel 基本概念 正文 环境准备 流控规则介绍 简单介绍 对 阈值类型 / 单机阈值做 测试 流控模式 直接流控模式 关联流控模式 链路流控模式 资源名称的修改 链路模式正文 坑来了,怎么解决? 禁止收敛URL的入口 ...

SQL Server 无法创建索引 因为对象名称和索引名称重复

需求分析:如下图所示,给T_DD_OP1200_Final表的Id字段添加主键,保存时弹出 “T_DD_OP1200_Final”表 - 无法创建索引“PK_T_DD_OP1200_Final”。 因为发现对象名称 ‘dbo.T_DD_OP1200_Final’ 和索引名称 ‘PK_T_DD_OP1200_Fina...