• Flask面试题


     
        什么是Flask,有什么优点?
            轻量级web框架,默认依赖两个外部库:jinja2和Werkzeug WSGI工具
            适用于做小型网站以及web服务的API
     
     
        如何在Flask中访问会话?
            会话(seesion)会话数据存储在服务器上,需要存储在服务器上的临时目录中
            from flask import session导入会话对象
            session['name'] = 'admin'给会话添加变量
            session.pop('username', None)删除会话的变量
     
     
        Flask蓝图的作用?
            蓝图Blueprint实现模块化的应用
          - book_bp = Blueprint('book', __name__)创建蓝图对象
              - 蓝图中使用路由@book_bp.route('url')
              - 在另一.py文件里导入和注册蓝图
            from book import book_bp app.register_blueprint(book_bp)
     
        也问别的了,当时没打上来,也忘了。。
     
     
     
     
     
     
     
     
     
     
    1. 解释什么是Flask及其好处?
    Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务。
     
     
     
     
    2. Django和Flask有什么区别?
    Flask
    Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过
    Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
    入门简单,即便没有多少web开发经验,也能很快做出网站
    非常适用于小型网站
    非常适用于开发web服务的API
    开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力
    各方面性能均等于或优于Django
    Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方
    Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不
    Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
    Flask比Django更加Pythonic,与Python的philosophy更加吻合
    Django
    Django太重了,除了web框架,自带ORM和模板引擎,灵活和自由度不够高
    Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉
    Django的自带ORM非常优秀,综合评价略高于SQLAlchemy
    Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja2
    Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山
    Django目前支持Jinja等非官方模板引擎
    Django自带的数据库管理app好评如潮
    Django非常适合企业级网站的开发:快速、靠谱、稳定
    Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭
    Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植
    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. 列举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方法,其他都是可选的
     
     
     
     
     
     
    9. 列举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
     
     
     
     
     
     
     
    10. 什么是wsgi?
    WSGI(Web Server Gateway Interface,Web 服务器网关接口)则是Python语言中1所定义的Web服务器和Web应用程序之间或框架之间的通用接口标准。
    WSGI就是一座桥梁,桥梁的一端称为服务端或网关端,另一端称为应用端或者框架端,WSGI的作用就是在协议之间进行转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应用程序(WSGI Application)。
    Web Server接收HTTP请求,封装一系列环境变量,按照WSGI接口标准调用注册的WSGI Application,最后将响应返回给客户端。
     
     
     
     
     
    11. Flask框架依赖组件?
    Route(路由)
    templates(模板)
    Models(orm模型)
    blueprint(蓝图)
    Jinja2模板引擎
     
     
     
     
     
    12. Flask蓝图的作用?
    蓝图Blueprint实现模块化的应用
     
    book_bp = Blueprint(‘book’, name)创建蓝图对象
     
    蓝图中使用路由@book_bp.route(‘url’)
    在另一.py文件里导入和注册蓝图
     
    from book import book_bp app.register_blueprint(book_bp)
     
    作用
     
    将不同的功能模块化
    构建大型应用
    优化项目结构
    增强可读性,易于维护(跟Django的view功能相似)
     
     
     
     
     
     
    13. 列举使用过的Flask第三方组件?
    flask_bootstrap
    flask-WTF
    flask_sqlalchemy
     
     
     
     
     
    14. 简述Flask上下文管理流程?
    每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下文对象,把它们保存到隔离的栈里面,这样视图函数进行处理的时候就能直接从栈上获取这些信息。
     
     
     
     
    15. Flask中多app应用是怎么完成?
    请求进来时,可以根据URL的不同,交给不同的APP处理
     
     
     
     
     
    16. wtforms组件的作用?
    WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。
     
     
     
     
     
    17. Flask框架默认session处理机制?
    Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了。
     
    过期时间是通过cookie的过期时间实现的。
     
    为了防止cookie内容被篡改,session会自动打上一个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session里的内容不泄露,但至少防止了不被篡改
     
     
     
     
     
     
     
    18. 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直接编码,能够像操作对象一样从数据库获取数据。 
     
     
     
     
     
     
  • 相关阅读:
    【hdu4035】Maze
    【bzoj2707】走迷宫
    【CF123E】Maze
    【CF113D】Museum
    【recording】gdoi2018
    最近公共祖先(LCA)(题目)
    回转寿司
    counting
    B
    A
  • 原文地址:https://www.cnblogs.com/dearddu/p/12457016.html
Copyright © 2020-2023  润新知