实验介绍

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. [C#] 使用 NAudio 实现音频可视化

    预览: 捕捉声卡输出: 实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理: NAudio 中, 可以借助 WasapiLoopbackCapture ...

  2. Docker安装ElasticSearch和Kibana

    创建容器elasticsearch docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type= ...

  3. SpringBoot 项目 部署 war方式

    SpringBoot部署 –war方式 步骤1部署方式 Springboot 和我们之前学习的web 应用程序不一样,其本质上是一个 Java 应用程序,那么又如何部署呢? 通常来说,Springbo ...

  4. jquery常用操作整理

    1.数据中添加或者删除指定元素 var  arr=['red','yello','blue']; arr.push('green');  //添加元素 arr = $.grep(arr,functio ...

  5. JSON简单了解

    JSON简单了解 简介 JSON (JavaScript Object Notation):一种简单的数据格式,比xml更轻巧.JSON 是 JavaScript 原生格式,这意味着在 JavaScr ...

  6. 如何通过Zoho Books门户管理供应商

    作为一个企业,不管规模大小,都有自己的供应商来为业务提供相关的服务和配件.随着采购的频率和供应商数量的增加,采购的管理和付款的跟踪难度就会增加,进而影响到企业和供应商之间的关系. 为了解决这个问题,Z ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...

  8. 用JIRA管理你的项目——(三)基于LDAP用户管理

    JIRA提供了基于LDAP方式的用户管理,也就是用户密码的管理交给LDAP,而JIRA只管理用户在系统中的角色. 要打开JIRA的LDAP设置,首先需要验证下你的LDAP服务是否正常! 几乎有所有的L ...

  9. [刷题] 1 Two Sum

    要求 给出一个整型数组nums 返回这个数组中两个数字的索引值i和j 使得nums[i]+nums[j]等于一个给定的target值 两个索引不能相等 实例 nums=[2,7,11,15], tar ...

  10. [刷题] 20 Valid Parentheses

    要求 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效 左括号必须用相同类型的右括号闭合 左括号必须以正确的顺序闭合 空字符串可被认为是有效字符串 思路 遇 ...