1. 解释什么是Flask及其好处?

Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务。

2. Django和Flask有什么区别?

Flask

  1. Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过
  2. Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
  3. 入门简单,即便没有多少web开发经验,也能很快做出网站
  4. 非常适用于小型网站
  5. 非常适用于开发web服务的API
  6. 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力
  7. 各方面性能均等于或优于Django
  8. Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方
  9. Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不
  10. Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
  11. Flask比Django更加Pythonic,与Python的philosophy更加吻合

Django

  1. Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高
  2. Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉
  3. Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
  4. Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja2
  5. Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山
  6. Django目前支持Jinja等非官方模板引擎
  7. Django自带的数据库管理app好评如潮
  8. Django非常适合企业级网站的开发:快速、靠谱、稳定
  9. Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭
  10. Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植
  11. Django上手也比较容易,开发文档详细、完善,相关资料丰富

3. Flask-WTF是什么,有什么特点?

Flask的简单WTForms集成,包含CSRF、文件上传和Recaptcha集成。

flask-wtf可以保护表单免受跨站请求伪造(CSRF)的攻击,恶意网站将请求发送到被攻击者已登录的其他网站时就会引发CSRF

4. Flask脚本的常用方式是什么?

  • 在shell中运行脚本文件
  • 在python编译器中run

5. 如何在Flask中访问会话?

一个会话基本上允许记住从一个请求到另一个请求的信息。在Flask中,它使用签名的cookie,以便用户可以查看会话内容并进行修改。用户可以修改会话,只要它有密钥Flask.secret_key。

  • 会话(seesion)会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进行的数据存储在服务器上的临时目录中。
  • from flask import session导入会话对象
  • session[‘name’] = ‘admin’给会话添加变量
  • session.pop(‘username’, None)删除会话的变量

6. Flask是一个MVC模型吗?如果是,可以示例一下吗?

“””
基本上,Flask是一个简单的框架,其行为与MVC框架相同。所以MVC是Flask的完美选择.
“”“

7. 解释Python Flask中的数据库连接?

python中的数据库连接有两种方式
  • 在脚本中以用第三方库正常连接,用sql语句正常操作数据库,如mysql关系型数据库的pymsql库
  • 用ORM来进行数据库连接,flask中典型的flask_sqlalchemy,已面向对象的方式进行数据库的连接与操作

8. 谈谈restful?

9. 列举Http请求中常见的请求方式?

http请求中的8种请求方法

1、opions 返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)

2、Get 向特定资源发出请求(请求指定页面信息,并返回实体主体)

3、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改

4、Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)

5、Head 与服务器索与get请求一致的相应,响应体不会返回,获取包含在小消息头中的原信息(与get请求类似,返回的响应中没有具体内容,用于获取报头)

6、Delete 请求服务器删除request-URL所标示的资源*(请求服务器删除页面)

7、Trace 回显服务器收到的请求,用于测试和诊断

8、Connect HTTP/1.1协议中能够将连接改为管道方式的代理服务器

http服务器至少能实现get、head、post方法,其他都是可选的

10. 列举Http请求中的状态码?

1xx: 信息

2XX:成功

3XX:重定向

4XX:客户端错误

5XX:服务器错误

11. 列举Http请求中常见的请求头?

•Accept:浏览器可接受的MIME类型
•Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
•Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip
•Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。可以在浏览器中进行设置。
•Host:初始URL中的主机和端口
•Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
•Content-Type:内容类型
•If-Modified-Since: Wed, 02 Feb 201112:04:56 GMT利用这个头与服务器的文件进行比对,如果一致,则从缓存中直接读取文件。
•User-Agent:浏览器类型.
•Content-Length:表示请求消息正文的长度
•Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接
•Cookie:这是最重要的请求头信息之一
•Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT

12. 什么是wsgi?

  1. WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中1所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。
  2. WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。
  3. Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。

13. Flask框架依赖组件?

  • Route(路由)
  • templates(模板)
  • Models(orm模型)
  • blueprint(蓝图)
  • Jinja2模板引擎

14. Flask蓝图的作用?

蓝图Blueprint实现模块化的应用

book_bp = Blueprint(‘book’, name)创建蓝图对象

蓝图中使用路由@book_bp.route(‘url’)
在另一.py文件里导入和注册蓝图

from book import book_bp app.register_blueprint(book_bp)

作用

  • 将不同的功能模块化
  • 构建大型应用
  • 优化项目结构
  • 增强可读性,易于维护(跟Django的view功能相似)

15. 列举使用过的Flask第三方组件?

  • flask_bootstrap
  • flask-WTF
  • flask_sqlalchemy

16. 简述Flask上下文管理流程?

每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下文对象,把它们保存到隔离的栈里面,这样视图函数进行处理的时候就能直接从栈上获取这些信息。

17. Flask中多app应用是怎么完成?

请求进来时,可以根据URL的不同,交给不同的APP处理

18. wtforms组件的作用?

WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。

19. Flask框架默认session处理机制?

Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了。

过期时间是通过cookie的过期时间实现的。

为了防止cookie内容被篡改,session会自动打上一个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session里的内容不泄露,但至少防止了不被篡改

20. ORM的实现原理?

概念: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

详细介绍:让我们从O/R开始。字母O起源于”对象”(Object),而R则来自于”关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。
当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。
ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。

ORM技术特点:

1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。
2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

flask面试常问问题总结相关推荐

  1. java8 垃圾收集_面试官:怎么做JDK8的垃圾收集器的调优(面试常问)

    看着面试官真诚的眼神,心中暗想看起来年纪轻轻却提出如此直击灵魂的问题.擦了擦额头上汗,我稍微调整了一下紧张的情绪,对面试官说: 在jdk8中有serial收集器.parallel收集器.cms收集器. ...

  2. GET 和 POST 的区别(重要,面试常问)

    GET 和 POST 的区别(重要,面试常问) 1.GET 在浏览器回退时是无害的,而 POST 会再次提交请求. (get:不会再次发送请求:post:浏览器会继续向URI发送请求) 2.GET 产 ...

  3. 给大家提供一些面试常问的问题

    给大家提供一些面试常问的问题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :     私有成员, 在类的内部才可以 ...

  4. linux高级运维笔试简答题及答案,企业linux初级和高级运维面试常问题目问答总结技巧讲解(2020年录制)...

    课程增值: 课程是我最近面试辅导的所有学员,成功找到工作,企业常问题目,我带领大家学习,面试如何问答. 我曾经经历面试linux运维没有做大量准备,经历大量hr给我说的一句话就是 回家等通知吧,心碎了 ...

  5. Java面试常问计算机网络问题

    转载自   Java面试常问计算机网络问题 一.GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?na ...

  6. servlet面试常问问题_50个Servlet面试问答

    servlet面试常问问题 Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题 ...

  7. Redis面试常问3 如何实现分布式锁 记住Redis的原子性

    Redis面试常问3 如何实现分布式锁 上面的伪代码有问题 从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改: http://redisdoc.com/string ...

  8. java中高级面试_中高级面试常问:Java面向对象设计的六大原则

    这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则.只有掌握了这些原则,我们才能更好的理解设计模式.我们接下来要介绍以下6个内容.单一职责原则--SRP 开闭原则--OCP 里式替换原则--LS ...

  9. MySQL面试常问大全

    MySQL面试常问大全 1.关系型数据库和非关系型数据库的区别? 其实很好理解,先说一下最直白的的区别,关系型数据库中的数据有关系,非关系型数据库的数据无关系: 关系型数据库(Mysql和Oracle ...

最新文章

  1. 查看删除对象(活动目录快照配置管理系列五)
  2. pcap文件解析工具_【免费毕设】PHP网络数据包分析工具的设计与开发(源代码+论文)...
  3. 创新实训个人记录:metric k-center
  4. ASP用DSN连接数sql数据库
  5. Altium designer中提示some net were not able to be matched问题解决办法
  6. OpenGL 绘制grass草的实例
  7. Perl 面对对象的案例理解
  8. 在虚机上安装WIN2003
  9. 后端:Layui实现文件上传功能
  10. PyG图神经网络框架torch-geometric安装
  11. ListT转换为DataTable
  12. js:select的选择改变事件,获取当前选择的值
  13. colorpix取色小工具_Python版的取色器
  14. Springsecurity之UserDetails
  15. liunx 下mysql 的安装
  16. (二)NI采集卡应用学习:使用NI MAX创建测量任务及常见错误
  17. 台式机win10关闭fn热键_笔记本fn键,小编告诉你笔记本fn键怎么取消
  18. windows10关闭java自动更新
  19. 功能中进行频繁查询、提高查询效率的方法
  20. 勃林格殷格翰未来五年计划增资中国4.51亿欧元;第127届广交会闭幕 | 美通企业日报...

热门文章

  1. Centos7安装JDK【FinalShell终端本地文件上传失败解决办法】
  2. 喜大普奔!GitHub 官方 App 正式版首发!
  3. Excel输入公式计算只显示公式不出结果
  4. FastGCN: fast learning with graph convolutional networks via importance sampling 论文详解 ICLR 2018
  5. 淘宝拍立淘以图搜图接口:使用方法和指南
  6. 新一代iPhone后盖或将采用超级合金
  7. 因果关系发现:推开认知世界的大门
  8. 编程高效学习方法(费曼学习法)
  9. 论文分享:大数据智能决策,《自动化学报》
  10. HLS:矩阵乘法单元设计与SDK测试