知识总结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)用户输入网址,浏览器发起请求(2)WSGI(服务器网关接口)创建socket服务端,接受请求(3)中间件处理请求(4)url路由,根据当前请求的url找到相应的视图函数(5)进入view,进行业务处理,执行类或者函数,返回字符串(6)再次通过中间件处理相应(7)WSGI返回响应(8)浏览器渲染
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和302301和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中
知识总结2:Django常见面试题总结(持续更新)相关推荐
- 面试1:Java、微服务、架构常见面试题(持续更新中)
Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...
- 操作系统知识总结与常见面试题(持续更新)
操作系统常见面试题 参考来源: 知乎@Joe.Zhao CSDN@易阳 CSDN@JXH_123 1. 什么是进程? (比较典型的定义) (1)进程是程序的一次执行 (2)进程是一个程序及其数据在处理 ...
- Java常见面试题(持续更新)
文章目录 transient 关键字作用 final 关键字作用 封装的作用 HashMap,HashTable,ConcurrentHashMap HashMap不是线程安全的示例 HashMap常 ...
- Java 基础常见面试题(持续更新)
目录 1.Java 程序设计概述 1.1.Java 跨平台运行的原理是什么? 1.2.Java 的安全性体现在哪些方面? 1.3.面向对象和面向过程的区别是什么? 1.4.面向对象的有哪些特征? 1. ...
- 数据结构与算法—链表常见面试题(持续更新)
文章目录 一.链表环 1.判断链表是否有环 题目 方法1: 方法2: 二.反转链表 1.完全反转链表 题目: 方法1 方法2 2.反转部分链表 题目: 方法1 参考链接:https://blog.cs ...
- 测试人员常见面试题(持续更新)
1.如何保证产品质量 前言:产品质量与团队中的每个人都息息相关,光靠测试难以保障,下面从流程,团队,技术手段,其他四个方面说明 (1)流程:制定出统一的产品迭代流程,不符合公司流程的一律打回,常见流程 ...
- mysql常见面试题(持续更新)
1.mysql隔离级别有哪些?为什么要设计这几种隔离级别?默认隔离级别是啥?默认价格是如何避免幻读的?有哪些级别用了mvcc?不同级别的mvcc的区别?如果让你来设计,你还会想到其他方式达到这个效果嘛 ...
- 认真总结 HTTP常见面试题(持续更新)
这两天学习了一些HTTP相关的知识点,总结记录一下. <好看的版本!!> https://www.yuque.com/docs/share/6f16ec3a-9418-49a6-9cde- ...
- Django常见面试题总结(二)
接上篇文章:https://blog.csdn.net/YZL40514131/article/details/125813096?spm=1001.2014.3001.5501 二十一.select ...
- Mysql常见面试题(陆续更新中)...
1.一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15? 答:(1)如果表的类型是My ...
最新文章
- ng-options渲染的第一项为空的解决办法
- 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
- .net随笔-vb.net打开外部程序发送键盘信号(3)
- Python的列表List常见操作
- [计算机网络][HTTP]
- MarkDown 行首缩进
- iOS并发编程(GCD)学习笔记
- Win10安装和配置IIS web服务器环境来运行ASP(动态服务器页面)脚本
- vnc远程控制软件 有哪些vnc远程控制软件推荐
- Oracle如何导出存储过程
- 2203-python 24点游戏
- UEFI 编程(一)
- Python 3 《array》入门练习
- windows 查看/清除DNS解析记录
- unity动画系统之两个动画片段之间连线设置
- 通过excel文件在arcgis中点转面
- cf比赛A题总结(输出相同前缀数量的字符串)
- ​我的第三本译作《机器学习即服务》上架啦
- 中国石油大学《化工仪表及自动化》第二阶段在线作业
- 剑指Offer面试算法题Java实现
热门文章
- 十本数据结构与算法书籍推荐
- 新手入门 | 算法书籍推荐
- 惠普笔记本苹果w10双系统_苹果电脑安装双系统教程:MacOS和Win10双系统安装教程...
- iOS 实现Lottie动画
- 红米note2移动4g在哪里显示无服务器,小米 红米note2(移动版) 解锁教程
- Android studio做中国象棋,等级1(简单单人操作)
- ubuntu下使用命令行查看opencv版本
- qgis打开shp数据_关于QGIS打开SHP文件属性表乱码
- 临时邮箱有什么用,推荐5个临时邮箱
- 如何根据光学中像差(相位)求出其点扩散函数