Flask应用的基本结构·快速入门Flask

简介: 所有Flask应用都必须创建一个应用实例。Web服务器使用一种名为Web服务器网关接口(WSGI,Web server gateway interface,读作“wiz-ghee”)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是Flask类的对象,通常由下述代码创建:


1.初始化


所有Flask应用都必须创建一个应用实例。Web服务器使用一种名为Web服务器网关接口(WSGI,Web server gateway interface,读作“wiz-ghee”)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是Flask类的对象,通常由下述代码创建:


from flask import Flask
app = Flask(__name__)


2.路由和视图函数


在Flask应用中定义路由的最简便方式,是使用应用实例提供的app.route装饰器。下面的例子说明了如何使用这个装饰器声明路由:


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


带有参数的路径使用:


@app.route('/user/<name>')
def user(name):
    return '{}'.format(name)


例如:访问路径


http://127.0.0.1:5000/user/dahe



还可以指定某一个数据类型的路径信息:


@app.route('/user/<int:id>')
def user(id):
    return '{}'.format(id)


lask支持在路由中使用string、int、float和path类型。path类型是一种特殊的字符串,与string类型不同的是,它可以包含正斜线


3.Web开发服务器


Flask应用自带Web开发服务器,通过flask run命令启动

没有flask命令的旧版Flask中,若想启动应用,要运行应用的主脚本。主脚本的尾部包含下述代码片段:


if __name__ == '__main__':
    app.run()


4.调试模式


Flask应用可以在调试模式中运行。在这个模式下,开发服务器默认会加载两个便利的工具:重载器和调试器。


启用重载器后,Flask会监视项目中的所有源码文件,发现变动时自动重启服务器。在开发过程中运行启动重载器的服务器特别方便,因为每次修改并保存源码文件后,服务器都会自动重启,让改动生效。


调试器是一个基于Web的工具,当应用抛出未处理的异常时,它会出现在浏览器中。此时,Web浏览器变成一个交互式栈跟踪,你可以在里面审查源码,在调用栈的任何位置计算表达式。


若想以编程的方式启动调试模式,可以通过如下方式启动flask项目:


if __name__ == '__main__':
    app.run(debug=True)


千万不要在生产服务器中启用调试模式!❌


5.请求–响应循环


应用和请求上下文


为了避免大量可有可无的参数把视图函数弄得一团糟,Flask使用上下文临时把某些对象变为全局可访问。有了上下文,便可以像下面这样编写视图函数来判断用户的来源浏览器:


from flask import Flask, request
@app.route('/')
def hello_world():
    user_agent = request.headers.get('User-Agent')
    return 'Hello World Dahe!{}'.format(user_agent)


输出如下:


Hello World Dahe!Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.


在Flask中有两种上下文:应用上下文和请求上下文:

flask所有请求对象:


4872344baf434f5a833fa66fea9a8bcd.png


flask所有请求对象:


e9ae1166a70340cfaeeb6fe0397733c9.png


响应


如果视图函数返回的响应需要使用不同的状态码,可以把数字代码作为第二个返回值,添加到响应文本之后。例如,下述视图函数返回400状态码,表示请求无效:


from flask import Flask, request
@app.route('/')
def hello_world():
    user_agent = request.headers.get('User-Agent')
    return 'Hello World Dahe!{}'.format(user_agent), 400


下例创建一个响应对象,然后设置cookie:


from flask import make_response
@app.route('/')
def index():
    response = make_response('<h1>This document carries a cookie!</h1>')
    response.set_cookie('yours', '1314')
    return response


响应对象最常使用的属性和方法:



from flask import Flask, redirect
@app.route('/')
def hello_world():
    return redirect('https://www.baidu.com/')


特殊响应


重定向


Flask提供了redirect()辅助函数,用于生成这种响应:


异常


还有一种特殊的响应由abort()函数生成,用于处理错误


@app.route('/user/<int:id>')
def user(id):
    if id == 1:
        abort(404)
    return '{}'.format(id)


此时访问如下路径,会发生如下错误:


http://127.0.0.1:5000/user/1


目录
相关文章
|
3月前
|
监控 测试技术 Docker
【步步惊心】Flask应用云端之旅:从本地调试到一键上线的终极秘籍!
【8月更文挑战第31天】本文详细介绍了将基于Flask框架的Web应用从本地开发环境部署到云平台的全过程。首先,通过示例代码展示了如何搭建本地环境并测试应用。接着,讲解了如何使用Docker构建生产环境镜像。最后,以Heroku为例,说明了如何将应用部署到云平台,并介绍了监控与维护的方法。通过本文的最佳实践,你可以轻松完成Flask应用的部署。
46 0
|
5月前
|
Python
python3之flask快速入门教程Demo
python3之flask快速入门教程Demo
79 6
|
5月前
|
关系型数据库 MySQL 数据库
如何使用Python的Flask框架来构建一个简单的Web应用
如何使用Python的Flask框架来构建一个简单的Web应用
94 0
|
3月前
|
数据可视化 前端开发 数据挖掘
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
本文介绍了一个基于Python Flask框架的广州历史天气数据应用与可视化大屏系统,该系统通过数据采集、处理、分析和可视化技术,提供了丰富的气象数据展示和决策支持,帮助用户快速了解和应对气象变化。
【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏
|
3月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
|
3月前
|
存储 SQL 安全
【绝密攻略】Flask应用如何抵御黑客入侵?七大安全技巧助你构建固若金汤的Web防线!
【8月更文挑战第31天】安全性是Web应用开发中的关键部分。Flask作为一款轻量级且高度可定制的框架,虽灵活但需开发者确保应用安全。本文介绍如何通过具体措施加固Flask应用,包括更新依赖项、启用CSRF保护、使用HTTPS、安全存储密码、防止SQL注入及清理用户输入等。通过示例代码展示如何在实际开发中应用这些策略,帮助提升应用安全性,为用户提供更可靠的服务。
84 0
|
3月前
|
Python Windows 内存技术
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
|
4月前
|
存储 数据库 开发者
Flask中的蓝图与插件应用:构建模块化Web应用的利器
【7月更文挑战第19天】Flask蓝图和插件是构建模块化、可扩展和可维护Web应用的强大工具。蓝图允许你将应用分割成多个独立的部分,提高了代码的组织性和可重用性;而插件则为Flask应用提供了丰富的功能和社区支持,简化了开发过程。通过合理地使用蓝图和插件,你可以更加高效地开发出高质量的Web应用。
|
4月前
|
安全 开发者 Python
告别迷茫,Django/Flask深入应用指南,让你的Web梦想照进现实!
【7月更文挑战第13天】在Python Web开发中,Django和Flask框架各具特色。Django适合快速构建企业级应用,提供ORM、模板引擎等全面功能;而Flask轻量灵活,适用于小项目和原型开发。通过实例,了解如何启动Django和Flask的基本应用,从创建项目到运行服务器。选择框架应考虑项目需求和个人偏好,不断学习与实践将助你实现Web梦想。
48 1
|
5月前
|
开发框架 开发者 Python
使用 Flask 为 Web 应用添加路由
通过学习 Flask 中的视图函数和路由规则,你可以使用 Flask 构建强大的 Web 应用程序并为其添加功能。在 Flask 中,视图函数以 Python 函数的形式定义,每个视图函数都与一个 URL 相关联。在 Flask 中,URL 处理程序被称为视图函数,它们用于响应客户端请求并返回响应。在 Flask 应用程序中,这是可选的。在这里,我们将其命名为 'hello',并将其与 URL '/hello/<name>' 绑定在一起。在上面的示例中,我们使用了默认的视图函数名称 'hello'。
50 2