python—Django面试题汇总

article/2024/12/29 9:47:26

django面试题

1. Django架构:MVT:
Django遵循MVC设计,并有一个专有的名词:MVT
1.M全拼为Model,与MVC的M功能相同,负责数据处理,内嵌了ORM框架。
2.V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse
3.T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎
2. 缓存雪崩
大量的KEY设置了相同的过期时间,导致缓存在同一时间全部失效,造成瞬间DB请求量大,压力骤增,引起雪崩。
解决:给缓存设置过期时间加上一个随机时间,不会集中在同一时刻失效。
3. 对Django的认识?
1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
2.Django内置的ORM跟框架内的其他模块耦合程度高。应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。
4. Django中MIDDLEWARES中间件的作用和应用场景?
中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。
简单的来说中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作
例如:1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确token值2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。3.当有用户请求过来时,判断用户是否在白名单或者在黑名单里
5. Django生命周期:
1.当用户在浏览器中输入url时,浏览器会生成请求头和请求体发送给服务端。
2.url经过Django中的wsgi,再经过Django的中间件,最后Url到路由映射表,在路由中一条条匹配;一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配。
3.视图函数根据客户端的请求查询相应的数据,返回给Django,让Django把客户端想要的数据作为一个字符串返回给客户端。
4.客户端浏览器接受到返回的数据,经过渲染后显示给用户。
6. django中csrf的实现机制?
1.django第一次响应来自某客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中,同时,后端把这个token放到cookie中交给前端页面;
2.下次前端需要发起请求的时候把这个token值加入到请求数据或者头信息中,一起传给后端
3.后端校验前端请求带过来的token和SESSION里的token是否一致。
7. Django flask tomaoto三者区别?
Django:python界最全能的web开发框架,各种功能完善,可维护性金和开发速度一级棒。
Flas:微框架的典范,号称python代码写得最好的项目之一。flask灵活。
Tornado:天生异步,性能强悍,诸多的功能需要自己完善。
参考链接:http://www.cnblogs.com/lmh001/p/9790799.html
---------------------------------------------------
1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlit数据库和开发测试用的服务器给开发者提高了超高的开发效率
2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎
3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式
参考链接:https://www.cnblogs.com/chongdongxiaoyu/p/9403399.html
8. 简述什么是FBV和CBV
FBV(function base views)就是在视图函面使用函数处理请求
CBV(class base views)就是在视图里面使用类处理请求
9. 命令migrate 和makemigrations的差别
makemigrations 生成迁移文件
migrate 执行迁移
10. HTTP响应常见状态码分类

在这里插入图片描述

11. 路由匹配原则是什么?
····关于正则匹配优先级
在url匹配列表中,如果第一条和第二条同时满足匹配规则,则优先匹配第一条。
在url匹配列表中,如果第一条为正则模糊匹配,第二条为精确匹配,则优先匹配第一条
12. 解决跨域的常用方式是什么?
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。
广义的跨域:1.) 资源跳转: A链接、重定向、表单提交2.) 资源嵌入: link script img frame等dom标签,还有样式中background:url()、@font-face()等文件外链3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等
未完待续,占坑...
13. Django重定向你是如何实现的?用的什么状态码?
- 使用HttpResponseRedirect 
- redirect  和  reverse 
- 状态码:302,301
14. django的ORM?
orm是什么?优势?
Django的一个强大功能就是它的对象关系映射ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库;
通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。
在更换数据库的时候,只需要更换数据库的引擎配置信息即可,无需重写数据库的语句。
Django orm数据库的开发步骤:
1.在settings.py中更换数据库的设置
2.在应用的model.py中定义模型类。
3.生成迁徙文件python manage.py makemigrations  -> 在migrations文件夹生成0001_intial.py
4.执行迁移文件同步到数据库python mange.py migrate  -> 在数据库中生成对应的数据 test01_department 等
5.通过ORM的模型类,进行增删改查等工作。
参考链接:https://blog.csdn.net/weixin_42419806/article/details/80643399
15. Django 本身提供了 runserver,为什么不能用来部署?
runserver方法是调试Django时经常用到的运行方式,它使用Django自带的WSGI Server运行;注意:在测试和开发中使用,并且runserver开启的方式也是单进程。
WSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。注意:uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的web服务器。
uWSGI具有超快的性能、地内存和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问请求与应用app个离开,实现真正的部署。
相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提高性能。
16.解释blank和null有什么区别?
blank设置为True时,字段可以为空。设置为False时,字段是必须填写的。如果为True,字段允许为空,默认不允许。字段型字段CharField和TextField是用空字符串来存储空值的。
null设置为True时,django用Null来存储空值。日期型、时间型和数字型字段不接受空字符串。所以设置IntegerField, DateTimeField型字段可以为空时,需要将blank,null均设为True.如果为True,空值将会被存储为Null,默认为False。如果像设置BooleanField为空时可以选用NullBooleanField型字段。
一句话概括:null 是针对数据库而言,如果null=True,表示数据库的该字段可以为空。NULL represents non-existent data.blank 是针对表单的,如果blank=True,表示你的表单填写该字段的时候可以不填。
17.get请求和post请求的区别
1.get请求在浏览器地址栏拼接明文传输,post在请求体内稍微安全点。
2.get方式提交的数据最多是1024字节,而post没有限制。
3.get可以收藏为书签,而post不可以。
4.get和post在服务端请求数据的方式不一样。
18.什么是Cookie、如何获取、设置Cookie
会话跟踪技术,保留用户
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。
具体一个浏览器针对一个服务器存储的key-value({})
response.set_cookir("is_login",True)	#设置cookie
resquest.COOKIES.get("is_login")	#获取cookie
19.什么是session,与cookie的对比、设置、获取、清空session
Session是服务器端技术,服务器在运行的时候可以为每一个用户创建一个独享的session对象,由于session为用户浏览器独享,所以用户访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
resquest.session['is_login'] =True
is_login = resquest.session.get("is_login")
request.session.flush()
20. values()与values_list()有什么区别?
#values : 取字典的queryset
#values_list : 取元组的queryset
21.urlpatterns中的name与namespace有什么作用?你是如何使用的?
name:别名,给路由起一个别名。
namespace:名称空间,防止多个路由之间的路由重复。

未完待续...

原文链接:http://www.manbanzhen.top/?p=170

参考链接:https://www.cnblogs.com/wenyule/p/699aa722eb4f9b16acf554df2337ec6f.html
https://www.cnblogs.com/chongdongxiaoyu/p/9403399.html

www.ofus.ink
原文链接:http://www.manbanzhen.top/?p=170


http://chatgpt.dhexx.cn/article/rNnLU70H.shtml

相关文章

超详细的Django面试题

Hello,我是 Alex 007,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。 框架层 01.什么是Django框架?(初级) Django是一个开放源代码的Web应用框架&am…

django面试题总结

列举HTTP中常见的请求方式 HTTP请求的方法: HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式 注意: 1)方法名称是区分大小写的,当某个请求所…

Django 面试题

过完年后,就是春招了,是找工作的好时机,找工作或换工作的同学需要好好准备一下面试了,最近我精选了 10 个关于 Django 的面试题,如果要看更多面试题目,请在公众号后台回复「面试」获取。祝你新的一年&#…

Django常见面试题总结(一)

一、ORM是什么?优势? ORM:中文翻译为对象关系映射。 模型类名对应数据库表名 类属性对象数据库表字典 类属性中的字段对应数据库中的约束条件 模型类的多个实例对应于实例 优势: orm的技术特点,提高了开发效率&#xf…

Django面试题

目录 1 列举Http请求中常见的请求方式 2 谈谈你对HTTP协议的认识 3 简述MVC模式和MVT模式 4 简述Django请求生命周期 5 简述什么是FBV和CBV 6 谈一谈你对ORM的理解 7 rest_framework 认证组件的流程 8 什么是中间件并简述其作用 9 django 中间件生命周期 10 django中…

2020年最新Django经典面试问题与答案汇总(上)-大江狗整理

周末抽空整理了下Django经典面试问题及答案,希望对小伙伴们学习和工作有所帮助。如果小编我是负责招聘Python Web或Django开发人员的面试官,我也会考虑问如下问题。从下面可以大致了解一个面试者对Django技术的了解程度。由于篇幅所限,本文将…

用HTML5制作的3D相册

HTML5 非常强大,尤其是和CSS3结合,有时候能达到非同凡响的网页动画效果。今天要分享的这款HTML5应用就是一款很酷的3D立体图片相册应用,它可以用鼠标多拽从多个角度浏览相册图片,点击图片,就可以放大图片,…

HTML5制作信息登记表

# 制作信息登记表#样式需求分析: 一、 通过最外层的大盒子对页面进行整体控制,设置宽高、背景图片及相对定位。 二、 通过标记对表单进行整体控制,对其设置宽高、边距、边框样式及绝对定位。 三、 通过 标记控制标题的文本样式,对其设置…

HTML5制作二级菜单(主菜单的子菜单)

HTML5制作二级菜单&#xff08;主菜单的子菜单&#xff09; 一、HTML文件代码二、 CSS文件代码三、效果图 一、HTML文件代码 <!--submenu.html--> <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><link r…

制作HTML5海报

一、HTML5海报有什么卵用&#xff1f; HTML5海报作用跟一般的海报差不多&#xff0c;但是拥有更生动的灵活的页面和便捷快速的传播途径&#xff08;网络&#xff09;。不仅可以在微信公众号中推广&#xff0c;也可以在票圈&#xff0c;空间&#xff0c;群上推广。做得好的海报&…

用html5和css制作信息登记表

<!doctype html> <html><head><meta charset"utf-8"><title>信息登记表</title><!-- <link rel"stylesheet" href"style07.css" type"text/css"> --><style type"text/css&q…

html5制作购物车页面,利用html来制作一个简单美观的购物车界面

首先来展示一下购物车界面: (学习视频分享:html视频教程) 这个页面只是实现了其布局视图,没有使用js或者jquery相关语言,在博主看来是比较利于我们将其加入到自己的程序中的以下是相关代码: index.html 商品名称单价数量操作旁氏洗发露991删除旁氏洗发露991<

html5制作圆形

代码如下 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Document</title> <style type"text/css"> .addBg { width: 100px; height: 100px; background-color…

html页面转盘如何实现,html5制作转盘的详解及实例

今天给大家带来的案列是html5转盘实例,可以直接拿来做抽奖程序,有需要的朋友可以拿去使用,下面是案列代码。html5制作转盘游戏 h1{width: 100%; height: 3rem; line-height: 3rem; font-size: 1.8rem; color:#c60; text-align: center; font-weight: bolder; } KinerLotter—…

用html做网页作品,HTML5实例:用HTML5制作的网页的15个优秀案例

在这里分享给大家精心挑选的15个HTML5网站模板&#xff0c;这些模板涉及商业、投资、简历、画廊、艺术、慈善、房地产&#xff0c;以及食品等等方面。 1. Zeni – Responsive HTML5 Portfolio Template Demo Download 2. Torn – HTML5 Template 5 Skins Demo Download 3. Fold…

用HTML5制作一个简易计算器

用H5制作一个简易计算器 最近刚学JavaScript&#xff0c;之后紧接着做了一个简易的计算器&#xff0c;能够实现数字的加减乘除运算。 首先&#xff0c;先用HTML5搭建好计算器大体框架。我这里用了两个表格&#xff0c;一个充当显示器&#xff0c;另一个表格就做成计算器按键部…

如何用html做一个贪吃蛇,如何用HTML5制作贪吃蛇游戏

如何用HTML5制作贪吃蛇游戏 发布时间:2020-07-09 15:09:59 来源:亿速云 阅读:122 作者:Leah 如何用HTML5制作贪吃蛇游戏?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 本文介绍了H5 c…

用HTML5制作精美战机游戏

每天要被大学老师催H5作业&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 不如看看本文&#xff0c;代码齐全&#xff0c;直接用来做参考案例&#x1f44c;&#x1f3fb; 干货满满不看后悔&#x1f44d;&#x1f44d;&#x1f44d; 代码…

用HTML5制作课程表

无论是上班族还是学生党&#xff0c;都需要一份类似课程表的表格来提醒我们的日程。有了它就可以不必担心自己忘记该干什么事情&#xff0c;到点了该干什么事情。它可以说是我们日常生活中经常接触的事物了&#xff0c;制作一份课程表也很简单&#xff0c;可以用纸写&#xff0…

使用HTML5制作的网页游戏-管道小鸟(附源码)

目录 1.整体项目框架 2.css样式 3. 游戏初始化 4.游戏结束提示 5.效果图​ 1.整体项目框架 2.css样式 *{padding: 0px;margin: 0px;}#game{width: 800px;height: 600px;background-image: url(img/bg.png);position: relative;overflow: hidden;/*溢出隐藏*/}#bird{width…