当前位置: 首页 > news >正文

第一个 Flask 项目

第一个 Flask 项目

  • 安装环境
  • 创建项目
  • 启动程序
  • 访问项目
  • 参数说明
    • Flask对象的初始化参数
    • app.run()参数
  • 应用程序配置参数
    • 使用 Flask 的 `config.from_object()` 方法
    • 使用 Flask 的 `config.from_pyfile()` 方法
    • 使用 Flask 的 `config.from_envvar()` 方法
      • 步骤 1: 设置环境变量
      • 步骤 2: 编写配置文件
      • 步骤 3: 在 Flask 应用中使用 `config.from_envvar()`
    • 4. 使用 Flask-AppConfig 或其他扩展
    • 结论

安装环境

mkvirtualenv flask_envpip install flask

创建项目

在这里插入图片描述

启动程序

在这里插入图片描述

访问项目

在这里插入图片描述

http://127.0.0.1:5000/
在这里插入图片描述

参数说明

Flask是一个用Python编写的轻量级Web应用框架,它提供了构建Web应用所需的基本工具和功能。以下是Flask的一些主要参数说明:

Flask对象的初始化参数

在创建Flask应用时,可以通过Flask类的构造函数传递一些参数来定制应用的行为。
在这里插入图片描述

Flask对象的初始化是通过调用Flask类并传递参数来完成的。虽然Flask类提供了许多参数,但大多数情况下,你只需要关注其中的几个关键参数。下面是对Flask类初始化时常用和可能用到的参数的详细解释:

  1. import_name: 这是Flask应用所在的包或模块的名称。Flask使用这个参数来定位应用相对于其他资源的路径(如模板和静态文件)。在大多数情况下,你可以直接传递__name__作为这个参数的值。

  2. static_folder: 这是一个可选参数,用于指定静态文件(如CSS、JS、图片等)的文件夹路径。默认情况下,它会被设置为'<yourapplication>/static'

  3. static_url_path: 这也是一个可选参数,用于指定静态文件在Web上访问的URL路径。默认情况下,它会与static_folder的参数值相同,即'/static'

  4. template_folder: 这是一个可选参数,用于指定模板文件的文件夹路径。默认情况下,它会被设置为'<yourapplication>/templates'

  5. instance_path: Flask应用实例的文件夹路径,用于存放应用的一些临时文件(如上传的文件)。默认情况下,它会被设置为'<yourapplication>/instance'。但请注意,这个路径是相对于import_name指定的包或模块的路径的。

  6. instance_relative_config: 这是一个布尔值参数,用于指定配置文件是否应该相对于实例文件夹(由instance_path指定)加载。默认为False,意味着配置文件应该位于应用的根目录或指定的绝对路径。

  7. root_path: Flask应用的根目录。在大多数情况下,你不需要手动设置这个参数,因为Flask会根据import_name自动推断出根目录。

  8. url_map_class: 用于创建URL映射的类的名称。这通常用于自定义URL解析的行为。大多数情况下,你可以忽略这个参数。

  9. subdomain_matching: 一个布尔值,用于控制是否应该启用子域匹配。这在构建需要基于子域进行路由的复杂应用时非常有用。

  10. template_context_processors: 一个列表,包含用于向模板上下文添加额外变量的函数。这些函数会在模板渲染之前被调用。

  11. cli_class: 用于自定义Flask CLI的类。Flask CLI是一个强大的命令行界面,用于执行各种与Flask应用相关的任务。

  12. cli_group: 用于将自定义命令分组到特定的Flask CLI子命令中的名称。

  13. server_name: 服务器名称的字符串,用于辅助URL生成和子域支持。这通常只在需要知道应用的确切URL前缀时才会用到。

  14. application_factory: Flask 1.1.0中引入的,一个布尔值,指示应用工厂模式是否被使用。这通常用于与WSGI服务器和扩展交互,以支持延迟创建应用实例。

请注意,虽然这里列出了许多参数,但在日常开发中,你通常只需要关注import_namestatic_folderstatic_url_pathtemplate_folder等少数几个参数。其他参数主要用于更高级或特定的用例。

另外,值得注意的是,Flask的run()方法(用于启动开发服务器)也接受一些参数,如hostportdebug等,但这些参数与Flask对象的初始化无关,而是与启动开发服务器时的配置有关。

app.run()参数

在这里插入图片描述

app.run() 方法在 Flask 中用于启动开发服务器。虽然对于大多数基本用途,你可能只需要设置 debughostport 几个参数,但 run() 方法实际上提供了更多的配置选项。以下是 app.run() 方法的一些常用和可能的参数解释:

  1. host: 监听的主机名。默认为 127.0.0.1,即服务器仅接收来自运行它的机器的连接。如果你想要你的应用可以从网络上的任何位置被访问,可以设置为 '0.0.0.0'

  2. port: 监听的端口号。默认为 5000。端口号是一个 0 到 65535 之间的整数,用于区分运行在同一台机器上的不同服务。

  3. debug: 是否启用 Flask 的调试模式。默认为 False。在调试模式下,Flask 会提供更多关于错误的详细信息,并且允许你在不重启服务器的情况下修改代码并查看更改效果(使用某些开发工具时)。但请注意,在生产环境中应该关闭调试模式,因为它会暴露敏感信息。

  4. threaded: 是否使用多线程。默认为 False。如果你的应用需要处理多个并发请求,可以启用此选项。然而,在生产环境中,通常建议使用像 Gunicorn 这样的 WSGI 服务器来处理并发,因为它们提供了更好的性能和配置选项。

  5. processes: 如果 threadedFalse,则这个参数指定启动的进程数。默认为 1。这通常用于在 Unix 系统上,通过多进程而不是多线程来利用多核 CPU。但是,请注意,这与 threaded 参数是互斥的;你不能同时设置 threaded=Trueprocesses>1

  6. passthrough_errors: 当设置为 True 时,错误会通过 HTTP 状态码传播。这主要用于调试目的,并允许错误处理程序(如果有的话)处理它们。默认为 False

  7. ssl_context: 一个包含 SSL 证书的元组 (certificate, key),用于启用 HTTPS。这对于保护你的应用和用户数据非常重要。如果没有提供,服务器将默认使用 HTTP。

  8. use_reloader: 是否使用 Flask 的代码重新加载器。在调试模式下,这通常是启用的,但你可以通过将此参数设置为 False 来禁用它。注意,这可能会因 Flask 版本而异,因为某些版本可能直接通过 debug 参数控制代码重新加载。

  9. use_debugger: 是否启用 Flask 的交互式调试器。这允许你在出现未捕获的异常时获得一个交互式调试会话。默认为 Truedebug=True 时,但你可以通过将此参数设置为 False 来禁用它。

  10. use_evalex: 是否在调试器的代码执行环境中启用 evalex(一个可以执行任意 Python 代码的交互式 shell)。出于安全考虑,默认为 Truedebug 未被显式设置或 debug=True 时,但你可以通过将此参数设置为 False 来禁用它。

请注意,这些参数可能会随着 Flask 版本的更新而发生变化。因此,建议查阅你正在使用的 Flask 版本的官方文档以获取最准确的信息。

应用程序配置参数

在 Flask 应用程序中,配置参数是管理和定制应用行为的关键部分。Flask 提供了一种灵活的方式来加载和配置这些参数。以下是一些常用的方法来加载 Flask 应用程序的配置参数:
在 Flask 应用程序中加载配置参数是一个常见的需求,它允许你根据应用程序的不同环境(如开发、测试和生产)来调整其行为。以下是一些在 Flask 应用程序中加载配置参数的方法:

使用 Flask 的 config.from_object() 方法

你可以定义一个或多个配置类(通常是在一个单独的 Python 文件中),然后在 Flask 应用初始化时通过 config.from_object() 方法加载这些配置。

config.py

class Config:DEBUG = FalseTESTING = FalseSECRET_KEY = 'a_very_secret_key'class DevelopmentConfig(Config):DEBUG = Trueclass TestingConfig(Config):TESTING = Trueclass ProductionConfig(Config):DEBUG = False

app.py

from flask import Flask
from config import DevelopmentConfigapp = Flask(__name__)
app.config.from_object(DevelopmentConfig)# 现在 app.config 包含了 DevelopmentConfig 中的配置

使用 Flask 的 config.from_pyfile() 方法

如果你更喜欢使用配置文件(如 .ini.cfg.py 文件,但不带类),你可以使用 config.from_pyfile() 方法。

config.py

DEBUG = True
SECRET_KEY = 'a_very_secret_key'

app.py

from flask import Flaskapp = Flask(__name__)
app.config.from_pyfile('config.py')# 现在 app.config 包含了 config.py 文件中的配置

注意:如果 config.py 文件不在 Flask 应用的根目录下,你需要提供完整的路径。

使用 Flask 的 config.from_envvar() 方法

Flask 的 config.from_envvar() 方法允许你根据环境变量中指定的文件名来加载配置。这种方法特别有用于当你想要根据环境(如开发、测试、生产)动态地选择配置文件时。

首先,你需要在环境变量中设置一个值,该值指向你的配置文件(例如,一个 .py 文件或 .ini 文件,但请注意 Flask 原生只支持 .py 文件或可以被解析为 Python 字典的 .json 文件)。然后,在 Flask 应用初始化时,使用 config.from_envvar() 方法并传入环境变量的名称。

步骤 1: 设置环境变量

在 Unix-like 系统中,你可以在 shell 配置文件(如 .bashrc.bash_profile)中设置环境变量:

export FLASK_CONFIG_FILE=/path/to/your/config.py

在 Windows 系统中,你可以在命令提示符或 PowerShell 中设置环境变量:

set FLASK_CONFIG_FILE=C:\path\to\your\config.py

或者使用 PowerShell:

$env:FLASK_CONFIG_FILE="C:\path\to\your\config.py"

步骤 2: 编写配置文件

假设你的配置文件是一个 Python 文件(config.py),它看起来像这样:

# config.py
DEBUG = True
SECRET_KEY = 'a_very_secret_key'
# 其他配置...

步骤 3: 在 Flask 应用中使用 config.from_envvar()

在你的 Flask 应用中,使用 config.from_envvar() 方法来加载配置:

from flask import Flaskapp = Flask(__name__)
app.config.from_envvar('FLASK_CONFIG_FILE')# 现在 app.config 包含了 config.py 文件中的配置

然而,需要注意的是,config.from_envvar() 方法实际上期望环境变量指向一个 Python 文件(或可以解析为 Python 字典的 JSON 文件),并且该文件应该定义了一个 Python 字典或类似字典的对象(通常是通过定义一个或多个配置类来实现的),但在这个例子中,我们直接使用了 Python 文件。

如果你的环境变量指向的是一个 .ini 文件或其他非 Python 文件,并且你希望 Flask 能够加载它,你可能需要使用一个自定义的加载函数或 Flask 扩展(如 Flask-AppConfig,尽管它可能不直接使用 from_envvar() 方法)。

但是,对于 .ini 文件,Flask 没有直接的支持,因此你可能需要编写一些额外的代码来解析这个文件,并将其内容设置为 Flask 的配置。

对于 .json 文件,你可以使用 config.from_json() 方法,但同样,你需要先以某种方式(如通过环境变量)获取到 .json 文件的路径。不过,这通常不是通过 from_envvar() 方法直接完成的,因为 from_envvar() 预期的是一个指向 Python 配置文件的路径。

4. 使用 Flask-AppConfig 或其他扩展

虽然 Flask 核心本身提供了基本的配置加载功能,但你也可以使用 Flask 扩展(如 Flask-AppConfig)来简化配置加载过程。这些扩展通常提供了更灵活的配置加载选项,包括从多个源加载配置的能力。

结论

选择哪种方法取决于你的具体需求和环境。对于大多数项目,结合使用配置类和环境变量是一种灵活且强大的方法。这样,你可以轻松地根据不同的环境调整配置,而无需修改代码或配置文件。

相关文章:

第一个 Flask 项目

第一个 Flask 项目 安装环境创建项目启动程序访问项目参数说明Flask对象的初始化参数app.run()参数 应用程序配置参数使用 Flask 的 config.from_object() 方法使用 Flask 的 config.from_pyfile() 方法使用 Flask 的 config.from_envvar() 方法步骤 1: 设置环境变量步骤 2: 编…...

利用 Angular 发挥环境的力量

一.介绍 您是否曾想过如何在不同的环境中为同一应用设置不同的颜色、标题或 API 调用&#xff1f;可以肯定的是&#xff0c;生产 API 和测试 API 是不同的&#xff0c;应谨慎使用。部署时&#xff0c;我们不会在项目的所有地方手动更改所有 API 调用。不应这样做&#xff0c;因…...

Vue3+TypeScript+printjs 实现标签批量打印功能

前言&#xff1a;临时性需求没怎么接触过前端&#xff0c;代码实现有问题及优化点希望大佬可以留言告知一下 开发工具&#xff1a;VS CODE 界面开发&#xff1a;Vue3TypeScriptElementPlus 打印组件&#xff1a;Print-JS 前端打印入口图&#xff1a; 标签页面&#xff1a; …...

微信文件如何直接打印及打印功能在哪里设置?

在数字化时代&#xff0c;打印需求依旧不可或缺&#xff0c;但传统打印店的高昂价格和不便操作常常让人头疼。幸运的是&#xff0c;琢贝打印作为一款集便捷、经济、高效于一体的网上打印平台&#xff0c;正逐渐成为众多用户的首选。特别是通过微信小程序下单&#xff0c;更是让…...

dataX -20240804-master分支

1、相关报错 Error: java.io.IOException: java.lang.RuntimeException: ORC split generation failed with exception: org.apache.orc.impl.SchemaEvolution$IllegalEvolutionException: ORC does not support type conversion from file type struct<nanos:int> (10)…...

【网络】传输层

传输层 一、预备知识1、端口号1、端口号范围划分2、知名端口号3、两个问题4、netstat && iostate5、pidof6、谈下面协议始终铭记两个问题 二、UDP协议&#xff08;简单&#xff09;1、UDP协议端格式2、UDP的特点3、面向数据报4、UDP缓冲区 三、TCP协议&#xff08;重点…...

学生管理系统之更新和删除、筛选

学生管理系统之更新和删除 建立新的窗口 添加组件 进行布局 使用Widget把二个放在一块,作为一列,然后全选进行栅格布局,最后添加弹簧进行微调。 编写增加的槽函数 在主函数中调用对话框...

教您一键批量下载拼多多批发图片信息,节省时间

图片是电商的核心展示手段&#xff0c;高质量、吸引人的图片能显著提升商品吸引力&#xff0c;增强用户体验&#xff0c;促进购买决策。良好的视觉呈现有助于品牌形象的塑造&#xff0c;提高转化率和客户满意度&#xff0c;对电商平台的流量和销售业绩具有直接影响。 使用图快…...

基于微信小程序的微课堂笔记的设计与实现(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…...

去噪扩散恢复模型

去噪扩散恢复模型 Bahjat Kawar 计算机科学系 以色列海法理工学院 bahjat.kawarcs.technion.ac.il Michael Elad 计算机科学系 以色列海法理工学院 eladcs.technion.ac.il Stefano Ermon 计算机科学系 美国加利福尼亚州斯坦福大学 ermoncs.stanford.edu …...

Stable Diffusion 官方模型V1.5版本下载

模型描述 Stable Diffusion的官方模型更适合绘制偏写实的风格&#xff0c;如果您想绘制二次元之类的风格&#xff0c;可以考虑下载本站的其它模型。 安装方法 将模型下载后&#xff0c;将会得到一个名为****.ckpt格式的文件&#xff0c;将该文件剪切至你的Stable Diffusion本…...

【算法】双指针-OJ题详解1

双指针-OJ题 移动零&#xff08;点击跳转&#xff09;原理讲解代码实现 复写零&#xff08;点击跳转&#xff09;原理讲解代码实现 快乐数&#xff08;点击跳转&#xff09;原理讲解代码实现 盛最多水的容器&#xff08;点击跳转&#xff09;原理讲解代码实现 有效三角形的个数…...

29 两个任务切换(1)

1 这里涉及到进程的切换与之前的 特权级的切换还是不一样的。 2 给每个进程 在 GDT表中&#xff0c;分配一个 TSS&#xff0c; 这个TSS中 保存着这个进程 所用到的 通用寄存器段寄存器 3个可能的栈&#xff0c; 当进行 进程切换的时候&#xff0c;就是切换到 另一个 TSS表&am…...

正则表达式概述

一、正则表达式概述 正则表达式&#xff08;Regular Expression&#xff0c;简称regex或regexp&#xff09;是一种强大的文本处理工具&#xff0c;它使用一种特定的模式来描述和匹配一系列符合某个句法规则的字符串。在Python中&#xff0c;我们可以使用re模块来操作正则表达式…...

【C语言】Top K问题【建小堆】

前言 TopK问题&#xff1a;从n个数中&#xff0c;找出最大&#xff08;或最小&#xff09;的前k个数。 在我们生活中&#xff0c;经常会遇到TopK问题 比如外卖的必吃榜&#xff1b;成单的前K名&#xff1b;各种数据的最值筛选 问题分析 显然想开出40G的空间是不现实的&#…...

Rust 程序设计语言学习——并发编程

安全且高效地处理并发编程是 Rust 的另一个主要目标。并发编程&#xff08;Concurrent programming&#xff09;&#xff0c;代表程序的不同部分相互独立地执行&#xff0c;而并行编程&#xff08;parallel programming&#xff09;代表程序不同部分同时执行&#xff0c;这两个…...

联邦学习研究综述【联邦学习】

文章目录 0 前言机器学习两大挑战&#xff1a; 1 什么是联邦学习&#xff1f;联邦学习的一次迭代过程如下&#xff1a;联邦学习技术具有以下几个特点&#xff1a; 2 联邦学习的算法原理目标函数本地目标函数联邦学习的迭代过程 3 联邦学习分类横向联邦学习纵向联邦学习联邦迁移…...

深入理解Python中的列表推导式

深入理解Python中的列表推导式 在Python编程中,列表推导式(List Comprehension)是一种简洁而强大的语法,用于创建和操作列表。它不仅提高了代码的可读性,还能显著减少代码的行数。本文将详细介绍什么是列表推导式,如何使用它,以及一些实际应用示例,帮助读者更好地理解…...

Android 实现左侧导航栏:NavigationView是什么?NavigationView和Navigation搭配使用

目录 1&#xff09;左侧导航栏效果图 2&#xff09;NavigationView是什么&#xff1f; 3&#xff09;NavigationView和Navigation搭配使用 4&#xff09;NavigationView的其他方法 一、实现左侧导航栏 由于Android这边没有直接提供左侧导航栏的控件&#xff0c;所以我尝试了…...

如何快速下载拼多多图片信息,效率高

图片是电商吸引顾客的关键因素&#xff0c;高质量的商品图片能提升产品吸引力&#xff0c;增强用户购买欲望。良好的视觉展示有助于建立品牌形象&#xff0c;提高转化率。同时&#xff0c;图片也是商品信息的主要传递媒介&#xff0c;对消费者决策过程至关重要。 使用图快下载器…...

零代码玩转物联网:用ItsaSnap与Adafruit IO实现手机控制硬件

1. 项目概述&#xff1a;当物联网遇上零代码&#xff0c;用手机就能玩转硬件数据 如果你对物联网&#xff08;IoT&#xff09;项目感兴趣&#xff0c;但又对写代码、搭服务器这些技术门槛望而却步&#xff0c;那么今天聊的这个工具可能会让你眼前一亮。想象一下&#xff0c;你…...

Word里MathType插件报错?别慌,手把手教你搞定MathPage.wll文件丢失问题

Word里MathType插件报错&#xff1f;三步精准定位MathPage.wll文件问题 当你正全神贯注地在Word中编辑数学公式&#xff0c;突然弹出一个刺眼的错误提示&#xff1a;"无法找到MathPage.wll文件"——这种突如其来的技术故障足以打断任何人的工作节奏。作为科研工作者、…...

构筑城市“数字底座”!全要素数据标准建设

城市运行管理服务平台的核心竞争力在于其建立了统一、规范的城市运行管理服务数据库。依据《城市运行管理服务平台数据标准》&#xff08;CJ/T545&#xff09;&#xff0c;我们的技术方案实现了对城市管理全要素的数字化映射。这不仅仅是简单的数据录入&#xff0c;而是构建了一…...

纺织行业智能化升级进入深水区:AI验布机从“可选项”变为“必选项”

过去三年&#xff0c;走访过数十家纺织服装企业的行业观察者会发现一个明显的变化&#xff1a;2023年时&#xff0c;AI验布机还是展会上引人驻足的新奇设备&#xff1b;到了2025年&#xff0c;它已经成为越来越多工厂标准配置的一部分。这一转变背后&#xff0c;折射出整个纺织…...

ssm基于Java的试题库管理系统(10030)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

使用VSCode无法登录Codex解决方法

登录时提示&#xff1a;Token exchange failed: token endpoint returned status 403 Forbidden: Country, region, or territory not supported确保魔法工具的连接模式是支持应用的&#xff0c;有的是只支持网站&#xff0c;切换成支持应用模式即可解决此问题。...

避开无感FOC的那些坑:我的STM32F103 SMO观测器调试心得与波形分析

避开无感FOC的那些坑&#xff1a;我的STM32F103 SMO观测器调试心得与波形分析 在无感FOC驱动开发中&#xff0c;观测器的调试往往是整个项目中最具挑战性的环节。当电机出现抖动、观测角度不准或启动失败时&#xff0c;如何快速定位问题并优化参数&#xff0c;成为工程师们必须…...

城通网盘直连解析终极指南:告别龟速下载的完整解决方案

城通网盘直连解析终极指南&#xff1a;告别龟速下载的完整解决方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘缓慢的下载速度而烦恼吗&#xff1f;ctfileGet是你的完美解决方案&…...

WeChatExporter完整指南:如何在macOS上免费备份微信聊天记录

WeChatExporter完整指南&#xff1a;如何在macOS上免费备份微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 微信聊天记录中包含了我们珍贵的回忆、重要的工作…...

Cursor编辑器自动化实践:利用Sisyphus脚本解放重复开发任务

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Fguedes90/cursor-sisyphus。乍一看这个标题&#xff0c;可能会有点摸不着头脑&#xff0c;但如果你是一个深度使用Cursor AI代码编辑器的开发者&#xff0c;或者对AI辅助编程的自动化流程感兴趣&…...