# Django 的认识,面试题
参考自:https://www.cnblogs.com/chongdongxiaoyu/p/9403399.html
##
## 1. 对Django的认识?
```
#1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
#2.Django内置的ORM跟框架内的其他模块耦合程度高。
#应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利;
#理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
#3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
#4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
#5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。
```
## 2. Django 、Flask、Tornado的对比
```
#1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器
#给开发者提高了超高的开发效率
#2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎
#3.Tornado走的是少而精的方向,性能优越。它最出名的是异步非阻塞的设计方式
#Tornado的两大核心模块:
# 1.iostraem:对非阻塞式的socket进行简单的封装
# 2.ioloop:对I/O多路复用的封装,它实现了一个单例
```
## 3. 什么是wsgi,uwsgi,uWSGI?
```
#WSGI:
# web服务器网关接口,是一套协议。用于接收用户请求并将请求进行初次封装,然后将请求交给web框架
# 实现wsgi协议的模块:
# 1.wsgiref,本质上就是编写一个socket服务端,用于接收用户请求(django)
# 2.werkzeug,本质上就是编写一个socket服务端,用于接收用户请求(flask)
#uwsgi:
# 与WSGI一样是一种通信协议,它是uWSGI服务器的独占协议,用于定义传输信息的类型
#uWSGI:
# 是一个web服务器,实现了WSGI协议,uWSGI协议,http协议,
```
## 4. django请求的生命周期?
```
#1.wsgi,请求封装后交给web框架 (Flask、Django)
#2.中间件,对请求进行校验或在请求对象中添加其他相关数据,例如:csrf、request.session -
#3.路由匹配 根据浏览器发送的不同url去匹配不同的视图函数
#4.视图函数,在视图函数中进行业务逻辑的处理,可能涉及到:orm、templates => 渲染 -
#5.中间件,对响应的数据进行处理。
#6.wsgi,将响应的内容发送给浏览器。
```
## 5. 简述什么是FBV和CBV?
```
#FBV和CBV本质是一样的
#基于函数的视图叫做FBV,基于类的视图叫做CBV
#在python中使用CBV的优点:
#1.提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
#2.可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
```
## 6. 如何给CBV的程序添加装饰器?
```
#引入method_decorator模块
#1.直接在类上加装饰器
#@method_decorator(test,name='dispatch')
#class Loginview(View):
# pass
#2.直接在处理的函数前加装饰器
#@method_decorator(test)
# def post(self,request,*args,**kwargs):pass
```
## 7. 简述MVC和MTV
```
#MVC软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)
#Model:负责业务对象与数据库的映射(ORM)
#View:负责与用户的交互
#Control:接受用户的输入调用模型和视图完成用户的请求
#Django框架的MTV设计模式借鉴了MVC框架的思想,三部分为:Model、Template和View
#Model(模型):负责业务对象与数据库的对象(ORM)
#Template(模版):负责如何把页面展示给用户
#View(视图):负责业务逻辑,并在适当的时候调用Model和Template
#此外,Django还有一个urls分发器,
#它将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
```
## 8. django路由系统中name的作用?
```
#用于反向解析路由,相当于给url取个别名,只要这个名字不变,即使对应的url改变
#通过该名字也能找到该条url
```
## 9. 列举django的内置组件?
```
#1.Admin是对model中对应的数据表进行增删改查提供的组件
#2.model组件:负责操作数据库
#3.form组件:1.生成HTML代码2.数据有效性校验3校验信息返回并展示
#4.ModelForm组件即用于数据库操作,也可用于用户请求的验证
```
## 10. 说一下Django,MIDDLEWARES中间件的作用和应用场景?
```
#中间件是介于request与response处理之间的一道处理过程,用于在全局范围内改变Django的输入和输出。
#简单的来说中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作
#例如:
#1.Django项目中默认启用了csrf保护,每次请求时通过CSRF中间件检查请求中是否有正确#token值
#2.当用户在页面上发送请求时,通过自定义的认证中间件,判断用户是否已经登陆,未登陆就去登陆。
#3.当有用户请求过来时,判断用户是否在白名单或者在黑名单里
```
## 11. 列举django中间件的5个方法?
```
#1.process_request : 请求进来时,权限认证
#2.process_view : 路由匹配之后,能够得到视图函数
#3.process_exception : 异常时执行
#4.process_template_responseprocess : 模板渲染时执行
#5.process_response : 请求有响应时执行
```
## 12. django的request对象是在什么时候创建的?
```
#class WSGIHandler(base.BaseHandler):
# request = self.request_class(environ)
#请求走到WSGIHandler类的时候,执行__cell__方法,将environ封装成了request
```
## 13. Django重定向是如何实现的?用的什么状态码?
```
#1.使用HttpResponseRedirect
#from django.http import HttpResponseRedirect
#2.使用redirect和reverse
#状态码:301和302
#301和302的区别:
#相同点:都表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址
#不同点:
#301比较常用的场景是使用域名跳转。比如,我们访问 http://www.baidu.com 会跳转到 https://www.baidu.com
#表示旧地址A的资源已经被永久地移除了
#302用来做临时跳转,比如未登陆的用户访问用户中心重定向到登录页面。表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B
```
## 14. xxss攻击
```
#-- XSS攻击是向网页中注入恶意脚本,用在用户浏览网页时,在用户浏览器中执行恶意脚本的攻击。
# -- XSS分类,反射型xss ,存储型xss
# -- 反射型xss又称为非持久型xss,攻击者通过电子邮件等方式将包含注入脚本的链接发送给受害者,
# 受害者通过点击链接,执行注入脚本,达到攻击目的。
# -- 持久型xss跟反射型的最大不同是攻击脚本将被永久的存放在目标服务器的数据库和文件中,多见于论坛
# 攻击脚本连同正常信息一同注入到帖子内容当中,当浏览这个被注入恶意脚本的帖子的时候,恶意脚本会被执行
# -- 防范措施 1 输入过滤 2 输出编码 3 cookie防盗
# 1,输入过滤 用户输入进行检测 不允许带有js代码
# 2,输出编码 就是把我们的脚本代码变成字符串形式输出出来
# 3,cookie加密
#向页面注入恶意的代码,这些代码被浏览器执行
#XSS攻击能做些什么:
# 1.窃取cookies
#
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料
资源推荐
资源详情
资源评论
收起资源包目录
Python后端面试相关基础知识归纳汇总.zip (19个子文件)
Python--master
Python基础篇
REMADE.md 9KB
面试技能+100 .docx 47KB
框架篇
Django
README.md 27KB
README.md 220B
数据库篇
MongoDB
README.md 7KB
MySQL篇
README.md 8KB
Redies
README.md 4KB
README.md 4KB
数据链路层
REMADE.md 4KB
网络篇
传输层
README.md 9KB
网络层
README.md 3KB
物理层
REMADE.md 363B
数据链路层
README.md 4KB
README.md 5KB
应用层
README .md 8KB
安装配置Nginx
README.md 4KB
操作系统篇
README.md 1B
Linux篇
README.md 259B
README.md 2KB
共 19 条
- 1
资源评论
辣椒种子
- 粉丝: 4138
- 资源: 5738
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功