实验介绍

1. 实验内容

内容涵盖了31个最热门的Flask面试问题,帮助学生更好的理解Flask。

2. 实验要点

  • 了解面试Flask开发人员的常见问题

实验内容

Flask面试问答

  1. Q:Flask是什么?

    A:Flask是一个用Python语言创建的web开发框架。该框架基于Jinja2模板引擎和Werkzeug综合的WSGI web应用程序库的健壮基础。

    Flask是由Armin Ronacher创建的,是Pallets项目的一部分,它是一个Python web开发库的集合,如Flask, Click, ItsDangerous, Jinja, MarkupSafe和Werkzeug。

  2. Q:Flask是否开源?

    A:Flask框架是开源的。Flask框架的源代码可以在GitHub上找到。它是在BSD-3条款许可下发布的。

  3. Q:如何获得Flask框架的开发版本?

    A:可以使用git获得Flask框架的开发版本。

    git clone https://github.com/pallets/flask
    cd flask && python3 setup.py develop
  4. Q:如何在Flask应用程序中添加邮件功能?

    A:要发送电子邮件,我们需要使用下面给出的命令安装flask - mail扩展模块。

    pip install Flask-Mail
    from flask_mail import Mail, Message
    from flask import Flask app = Flask(__name__)
    mail = Mail(app) @app.route(“/mail”)
    def email():
    msg = Message( “Hello Message”, sender=”admin@test.com”, recipients=[“to@test.com”])
    mail.send(msg)

一旦安装完毕,我们就需要使用Flask Config API来配置邮件服务器、MAIL_PORT、MAIL_USERNAME、MAIL_PASSWORD等等。然后,我们需要导入Message类,实例化它,并在使用mail.send()方法发送电子邮件之前形成一个Message对象。

  1. Q:WSGI是什么?

    A:WSGI相当于Web服务器网关接口。它是在PEP 3333中定义的Python标准。WSGI的发音是“whiskey”。它是一个描述web服务器如何与web应用程序通信的规范。

  2. Q:谁创建的Flask?

    A:Armin Ronacher创造了烧瓶框架。Flask是在2011年愚人节的一个玩笑中诞生的。

  3. Q:为什么我们要选择Flask?

    A:Flask用于使用Python编程语言创建Web应用程序。Flask是一个微框架,也用于快速构建基于web和网络的应用程序原型。

  4. Q:如何在Linux系统下安装Flask?

    A:在Linux中,可以使用Python的包管理器pip安装Flask。

    pip install Flask
  5. Q:Flask默认的主机地址和端口是什么?

    A:Flask的默认地址为localhost(127.0.0.1),默认端口号5000

  6. Q:如何改变Flask的默认地址和端口?

    A:在应用程序上调用run方法时,可以通过将修改的值传递给主机和端口参数来更改Flask的默认主机和端口。

    from flask import Flask
    app = Flask(__name__) @app.route("/")
    def index():
    return "Hello, World!" if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)
  7. Q:那部分Flask扩展可以用来创建Ajax应用程序?

    A:我们可以使用Flask-Sijax来创建Ajax应用程序。Flask-Sijax是一个使用Python/JQuery的扩展。它可以在PyPI上使用,并且可以使用pip安装。

    Sijax代表简单Ajax。一旦配置和初始化,它就支持使用@flask_sijax装饰器,我们可以使用它来让Ajax意识到Flask应用程序中的视图。

  8. Q:如何使用Flask命令?

    A:由于安装了Flask,我们还可以访问一个名为Flask的命令行应用程序。我们可以使用各种各样的命令。

    在命令行上使用Flask -help查看所有选项。缺省的命令有routes、run和shell。这个程序提供来自Flask、extensions和应用程序的命令。

  9. Q:如何在Flask获得请求参数?

    A:我们可以使用Flask中的request对象来获取参数的值。

    from flask import Flask
    from flask import request app = Flask(__name__) @app.route("/")
    def index():
    val = request.args.get("var") return "Hello, World! {}".format(val) if __name__=="__main__":
    app.run(host="0.0.0.0", port=8080)
  10. 如何在Flask中获得用户代理?

    A:我们可以使用request对象在Flask中获取用户代理。

    from flask import Flask
    from flask import request app = Flask(__name__) @app.route("/")
    def index():
    val = request.args.get("var")
    user_agent = request.headers.get('User-Agent') response = """
    <p>
    Hello, World! {}
    <br/>
    You are accessing this app with {}
    </p>
    """.format(val, user_agent)
    return response
    if __name__=="__main__":
    app.run(host="0.0.0.0", port=8080)

![img](C:\Users\YunHai\Desktop\Flask课程资源\新建文件夹\img\实验8、31个最重要的Python Flask面试问题和答案\1488ll1610461431.png)

  1. Q:在Flask应用程序中如何使用url_for()函数?

    A:Flask的url_for()函数帮助创建动态路由。我们可以在Flask模板中使用url_for()。我们可以调用带有参数和值的视图函数来生成url。

<a href=”{{ url_for(‘get_post_id’, post_id=post.id}}”>{{post.title}}

@app.route(“/blog/post/<string:post_id>”)
def get_post_id(post_id):
return post_id
```
  1. Q:如何在Flask创建管理界面?

    A:我们可以使用Flask-Admin扩展在Flask中创建一个管理界面。它有助于将各个视图分组在一起。我们也可以使用Flask-Appbuilder扩展。Flask-Appbuilder已经自带管理界面。

  2. Q:如何将Twitter或类似API与Flask应用程序集成?

    A:为了与Flask集成,我们可以使用Flask-Social的Flask扩展。它不仅有助于验证Twitter用户的身份,而且还有助于验证其他社交平台或帐户(如Facebook和Google)的身份。我们需要同时使用Flask-Social和Flask-Security。我们需要在Python中安装单个API库,还需要通过在外部帐户提供商上注册Flask应用程序来获取使用者密钥和安全密钥。

  3. Q:为什么Flask被称为微框架?

    A:Flask之所以称为微框架,是因为Flask仅提供核心功能,例如请求,路由和Blueprint。对于其他功能,例如缓存,ORM,表单等,我们需要使用Flask-Extensions。

  4. Q:使用Flask框架有什么好处?

    A:使用Flask框架的一些好处是:

    - 它具有内置的开发服务器。

    - 它具有大量的第三方扩展。

    - 它具有一个很小的API,并且可以由Web开发人员快速学习。

    - 它符合WSGI。

    - 它支持Unicode。

  5. Q:SQLite数据库是否内置Flask?

    A:SQLite是Python内置的。要在Flask中使用数据库,我们不需要安装任何其他的Flask-Extension。在视图内部,我们可以导入SQLite并编写SQL查询以与数据库进行交互。但是,Flask开发人员通常使用Flask-SQLAlchemy,它消除了编写复杂SQL查询的需要,并且支持与SQLite数据库进行交互的ORM。

  6. Q:Flask框架中的模板引擎是什么意思?

    A:模板是一个包含两种类型的数据的文件,即静态和动态。在运行期间填充模板中的动态数据。Flask利用Jinja2模板引擎,使开发人员可以使用带有占位符的HTML模板来创建动态数据。通过使用Flask的render_template方法以及所需的参数和值,可以在运行时填充这些占位符。

  7. Q:Flask中的Thread本地对象是什么意思?

    A:在Flask中,开箱即用提供了线程安全性。我们可以使用诸如current_app,g和request之类的对象,而不必担心与锁定和并发有关的问题。而且,我们不需要将对象从方法传递到方法,并且这些对象通常在有效的请求上下文中可用。Flask的此属性使其具有一些独特性,并在保持Flask应用程序线程安全的同时为Flask开发人员提供了很多便利。

  8. Q:Django和Flask有什么区别?为什么要选择Flask?

    A: Django还是一个使用Python编程语言创建的Web开发框架。它是功能齐全的Web应用程序框架,具有许多内置功能,例如Admin后端和具有迁移功能的ORM。它创建时间早,更成熟。Flask适用于快速开发用例,是原型制作的完美选择。Django甚至启发了一些已编写的Flask扩展。Flask更适合开发不需要大型代码库的轻量级Web应用程序。它易于开发微服务或无服务器应用程序。与Django相比,Flask简单易学且API更少。随着行业追随将微服务作为容器的一部分的趋势,将Flask保留在您的Web开发工具包中很实用。

  9. Q:简单介绍Flask的Forms扩展的功能。

    A: Flask中的表单可以通过使用名为Flask-WTF的扩展来实现。Flask-WTF是通过将Flask与WTForms集成而创建的。WTForms是基于python的表单呈现和验证库。它支持数据验证,国际化和CSRF保护。当与Flask-Upload绑定时,Flask-WTF还提供reCAPTCHA支持以及文件上传。您还可以处理JavaScript请求,并自定义错误响应。

  10. Q:如何在Flask中使用session?

    A:每当我们想要在请求之间保存一些数据时,我们就会在Flask中使用session对象。我们可以设置并从session对象获取数据,如下所示。

    fromflask import Flask, session
    
    app = Flask(__name__)
    
    @app.route('/use_session')
    def use_session()
    if 'song' not in session:
    session['songs'] = {'title': 'Tapestry', 'singer': 'Bruno Major'} return session.get('songs') @app.route('/delete_session')
    def delete_session()
    session.pop('song', None)
    return "removed song from session"
  11. Q:Flask中的g对象是什么?它与会话对象有何不同?

    A:Flask的g对象用作全局命名空间,用于在应用程序上下文中保存任何数据。g对象不适用于在请求之间存储数据。从某种意义上说,字母g代表global。在某些情况下,当您需要在应用程序上下文中保留全局变量,而不是创建全局变量时,最好使用g对象,因为Flask中的每个请求都有一个单独的g对象。Flask的g对象使我们免于意外修改自定义全局变量。

  12. Q:Flask中的应用程序上下文是什么?

    A:Flask中的应用程序上下文与完整的请求/响应周期有关。它在请求或CLI命令期间跟踪应用程序级数据。我们使用g和current_app代理来实现相同的目的。在某些情况下,例如Flask扩展或“Blueprint”很难直接导入Flask app。而且,直接import可能会引起循环import的问题。Flask随每个请求推送应用程序上下文。因此,在请求期间,自定义函数可以调用g和current_app来克服上述问题。

  13. Q:您可以通过哪些方式连接Flask中的数据库?

    A:Flask可用于大多数RDBMS,例如PostgreSQL,SQLite和MySQL。但是,要连接数据库,我们必须使用Flask-SQLAlchemy扩展。它使开发过程中的数据库交互和管理变得容易,而无需编写原始SQL查询。此外,原始SQL查询容易受到SQL注入攻击。对于使用NoSQL数据存储(例如MongoDB),我们可以使用Flask-MongoEngine扩展。

  14. Q:如何在Flask中创建一个RESTful应用程序?

    A:可以在Flask中借助许多扩展来创建RESTful应用程序。

    1. FLask-API

    2. FLask-RESTful

    3. Flask-RESTX

    4. Connexion

    我们需要根据自身的项目需要在其中进行评估和选择。

  15. Q:如何调试Flask应用程序?

    A:Flask附带有开发服务器,而开发服务器具有调试模式。当我们调用Flask Application对象的run方法时,可以将Debug模式设置为true。

    from flask import Flask
    app = Flask(__name__)
    app.run(host='127.0.0.1', debug=True)

    但是,我们需要在将应用程序部署到生产环境之前禁用调试模式,以避免在浏览器中完整显示堆栈跟踪。这样的堆栈跟踪可以揭示很多基本细节,并且容易被不良行为者利用。此外,我们可以利用Flask-DebugToolbar扩展名在浏览器中轻松调试。我们还可以利用Python的pdb模块和调试语句import pdb; pdb.set_trace()来支持调试过程。

  16. Q:我们可以使用Flask创建哪种类型的应用程序?

    A:使用Flask,我们可以创建几乎所有类型的Web应用程序。我们可以创建单页应用程序,基于RESTful API的应用程序,SAS应用程序,中小型网站,静态网站,微服务和无服务器应用程序。Flask用途广泛且灵活,可以快速与其他技术集成以达到相同目的。例如, Flask可与NodeJS Serverless,AWS lambda和类似的其他第三方服务结合使用,以构建新时代的系统。

实验总结

在本教程中,我们介绍了与Flask面试有关的问题,这些问题在参加面试时经常被提及。这些问题可能以不同的形式出现。建议学生多做一些思考,并对Flask的源码项目理解和做出贡献,提高他们的开发人员体验。

总体而言,Flask框架轻巧灵活。使用Flask学习开发非常容易。此外,Flask遵循Web应用程序开发的现代方法。它还具有广泛的社区支持,以更好地解决问题,并支持开源。

实验8、31个最重要的Python Flask面试问题和答案的更多相关文章

  1. python模拟面试技术题答案

      目录 Python4期模拟面试技术面试题答案............................................................................ ...

  2. Python笔试面试题目及答案

    1.is 和==的区别? is:比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象.是否指向同一个内存地址 == : 比较的两个对象的内容/值是否相等,默认会调用对象的eq()方法 ...

  3. 前端和后端的数据交互(jquery ajax+python flask+mysql)

    上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...

  4. python Flask

    python Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  5. 知了课堂 Python Flask零基础 笔记整理

    目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...

  6. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

  7. 【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https

    问题描述 在上篇博文"[Azure 应用服务]App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)"中,实现了通过 HT ...

  8. AFNetworking+Python+Flask+pyOpenSSL构建iOS HTTPS客户端&服务器端

    对于HTTPS我在网上找了一堆资料看了下, 各种协议和证书已经有点晕了 最后我现有的感觉是, 在HTTP服务器上放一个证书, 在原本的HTTP访问之前客户端先检查证书是否正确 如果客户端证书检查正确, ...

  9. python flask detect browser language

    python flask detect browser language   No problem. We won't show you that ad again. Why didn't you l ...

随机推荐

  1. Access+Mssql+Oracle数据库注入

    Access数据库注入 前言:在常见的注入测试中,由于每个数据库内置架构和应用不同,导致数据库类型将决定注入的手法,Access数据库是小型数据库类型,普遍用于小型WEB应用,其中Access注入手法 ...

  2. IntelliJ IDEA中项目的包和目录结构显示设置

    在新建的目录下再创建一个新目录时,出现了目录没有分层显示,这样使用起来十分不方便. 解决方案:点击右上方的设置按钮,将"compact middle packages"取消勾选,实 ...

  3. RESTful中的PUT和PATCH实践

    先放上后台的在线API文档:SkyBlog Swagger API 在UserApi中,有这样三个接口1. PUT /users/{id} 更新用户信息2. PATCH /users/role/{id ...

  4. CCNA 第二章 以太网回顾

    1:半双工和全双工 (1):半双工:类似于单车道: (2):全双工:类似是双向多车道: 2:思科三层模型 (1): (2):核心层.集散层(汇聚层).接入层各功能: 1:核心层:大量数据快速交换:不要 ...

  5. SpringBoot系列——Activiti7工作流引擎

    前言 工作流程是我们日常开发项目中常见的功能,本文记录springboot整合activiti7. Activiti介绍 官网:https://www.activiti.org 数据库表 act_hi ...

  6. Consul 服务的注册和发现

    Consul 是Hashicorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.Consul是分布式的,高可用的,可横向扩展的. Consul 的主要特点有:    Service Disc ...

  7. [bug] docker: Error response from daemon: Conflict. The container name "/xx" is already in use

    改名.删除或重启容器 参考 https://www.cnblogs.com/youxin/p/12993816.html

  8. [bug] TypeError : unsupported operand type(s) for += : 'NoneType' and 'int'

    原因 Flask购物网站中,每点击货物一次,数据库中货物的浏览次数+1,默认浏览次数为NULL,故无法完成运算 解决 将数据库中相应字段默认值设为0,注意要先断开数据库连接

  9. TrueCrypt与CryptSetup双系统全盘加密(图文)

    http://blog.topsec.com.cn/truecrypt%E4%B8%8Ecryptsetup%E5%8F%8C%E7%B3%BB%E7%BB%9F%E5%85%A8%E7%9B%98% ...

  10. 更换介质:请把标有Debian ... 的盘片插入驱动器

    Debian安装软件报错如下: 更换介质:请把标有 "Debian GNU/Linux 10.8.0 _Buster_ - Official amd64 DVD Binary-1 20210 ...