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

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

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

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

from flask import Flask

app = 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!"
相关推荐
2401_8576226623 分钟前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_8575893627 分钟前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
FreakStudio1 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21361 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
哎呦没2 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch2 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一个闪现必杀技2 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
小鹿( ﹡ˆoˆ﹡ )3 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温3 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学3 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm