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

一个“Hello, World”Flask应用程序

如果您访问Flask网站,会看到一个非常简单的示例应用程序,只有5行代码。为了不重复那个简单的示例,我将向您展示一个稍微复杂一些的示例,它将为您编写大型应用程序提供一个良好的基础结构。

应用程序将存在于包中。在Python中,包含__init__.py文件的子目录被视为包,并且可以导入。当你导入一个包时,__init__.py执行并定义包向外界公开的符号。

让我们创建一个名为app的包,它将承载应用程序。确保你在微博目录下,然后运行以下命令:

from flask import Flaskapp = Flask(__name__)from app import routes

上面的脚本只是简单地将应用对象创建为从Flask包中导入的Flask类的实例。传递给Flask类的__name__变量是一个Python预定义变量,它被设置为使用它的模块的名称。当需要加载模板文件等相关资源时,Flask会使用这里传递的模块的位置作为起点,我将在第二章中介绍这些资源。对于所有实际用途,传递__name__几乎总是会以正确的方式配置Flask。然后,应用会导入routes模块,这个模块还不存在。

一开始可能会让人感到困惑的一点是,有两个名为app的实体。app包由app目录和__init__.py脚本定义,并在from app import routes语句中被引用。app变量在__init__.py脚本中被定义为Flask类的一个实例,这使得它成为app包的成员。

另一个特点是,routes模块是在底部导入的,而不是像以往那样在脚本的顶部。底部导入是针对循环导入的一种解决方案,循环导入是Flask应用程序的一个常见问题。你将看到,routes模块需要导入这个脚本中定义的app变量,所以把其中一个对等导入放在底部,可以避免由于这两个文件之间的相互引用而导致的错误。

那么在routes模块中都有什么呢?路由是应用程序实现的不同url。在Flask中,应用程序路由的处理程序被写成Python函数,称为视图函数。视图函数被映射到一个或多个路由URL,这样Flask就知道当客户端请求给定的URL时该执行什么逻辑。

下面是这个应用的第一个视图函数,你需要把它写在一个名为app/routes.py的新模块中:

from app import app@app.route('/')
@app.route('/index')
def index():return "Hello, World!"

http://www.lryc.cn/news/224438.html

相关文章:

  • 计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法
  • 分享一本让你真正理解深度学习的书
  • Apache APISIX Dashboard 未经认证访问导致 RCE(CVE-2021-45232)漏洞复现
  • Git 安全警告修复手册:解决 `fatal: detected dubious ownership in repository at ` 问题 ️
  • 【MySQL事务篇】多版本并发控制(MVCC)
  • 拆分代码 + 动态加载 + 预加载,减少首屏资源,提升首屏性能及应用体验
  • 在 Vue3 中使用 mitt 进行组件通信
  • SQLite 3.44.0 发布!
  • 本地生活新赛道-视频号团购怎么做?
  • 输入一个url后,会发生什么事?
  • R语言和jsonlite库编写代码示例
  • 容联七陌携手岚时科技,解决医美机构回访3大痛点
  • 自动计算零售数据分析指标?BI软件表示可行
  • Qt读取xml文件并把内容显示到QTableview上
  • xv6-x86在ubuntu14.04 i386下正常编译、调试,在ubuntu23.04下编译各种报错--google镜像
  • 关于unity中 编辑器相关逻辑的记录
  • linux安装配置MongoDB并设置开机启动
  • 1366 - Incorrect string value: ‘\xE5\xB9\xBF\xE5\x85\xB0...‘ for column编码错误
  • K8S篇之谈谈kubelet的上报机制
  • 混沌系统在图像加密中的应用(小波混沌神经网络)
  • Node.js中的文件系统(file system)模块
  • react组件间通信之context
  • 京东数据分析:2023年10月京东洗衣机行业品牌销售排行榜
  • QQ恢复聊天记录,就用这3个方法!
  • 高能数造电池3D打印智能制造小试线,开启全固态电池数字化新时代
  • stable diffusion为什么能用于文本到图像的生成
  • c语言刷题第10周(16~20)
  • Vue.js 响应式系统深度剖析
  • LabVIEW如何才能得到共享变量的引用
  • 界面控件DevExtreme图表和仪表(v23.1) - 新功能(Angular,React,Vue,jQuery)