详解Python的Flash框架的常用语句 app = Flask(__name__),为什要以全局变量__name__作为初始化参数?

文章详细解释了在Python的Flask框架中,为什么在初始化应用时使用`app=Flask(__name__)`,以及`__name__`变量如何帮助确定应用的根路径,以便于Flask管理静态文件、模板文件和路由。这适用于脚本作为主程序运行或作为模块导入的不同情况。
部署运行你感兴趣的模型镜像

详解Python的Flash框架的常用语句:

app = Flask(__name__)

这一语句创建了一个Flask应用程序对象。

Flask是一个基于Python的轻量级Web框架,用于构建Web应用程序。在使用Flask时,我们需要创建一个Flask应用程序对象,该对象将充当我们构建Web应用程序的核心。

在初始化名叫app的对象时,为什以要以特殊全局变量__name__作为初始化值,这是理解这条语句的难点。

答案是这是为了方便Flask确定相关文件的路径,具体解释如下:

当脚本作为主程序运行时(此时__name__的值为__main__),Flask会将应用程序的根路径设置为脚本所在的目录。

假设您有以下的目录结构:

/myapp
  ├── app.py
  └── templates
      └── index.html

app.py是您的Flask应用程序脚本,templates是存放模板文件的目录。

app.py脚本中,使用以下代码创建Flask应用程序对象:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, Flask!'

当您在终端或命令行中执行以下命令时:

python /myapp/app.py

此时,由于__name__的值为__main__,所以Flask就知道了,脚本文件app.py所在的目录就是Flask相关功能函数所在的目录,此时Flask会将自己的根路径设置为/myapp,因此,Flask会在该路径下查找静态文件和模板文件。

现在,让我们考虑脚本作为模块被导入的情况。假设您有以下的目录结构:

/swh
  ├── run.py
  └── myapp
      ├── __init__.py
      └── views.py

run.py是一个简单的脚本,用于启动应用程序,而myapp是一个Python模块,其中包含Flask应用程序的定义。

/swh/myapp/__init__.py模块中,使用以下代码创建Flask应用程序对象:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, Flask!'

/swh/run.py脚本中,使用以下代码导入并启动Flask应用程序:

from myapp import app

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

当您在终端或命令行中执行以下命令时:

python /swh/run.py

Flask应用程序会发现__name__的值不为__main__,于是它就知道了它不应该把其相关路径设置为 /swh/,而应该设置为/swh/myapp/,然后在Flask会在该路径下查找静态文件和模板文件。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

`app = flask.Flask(__name__)` 是 Flask 应用开发中的关键代码行,以下是关于它的作用和使用场景的详细介绍。 ### 作用 在 Flask 框架里,`flask.Flask` 是一个类,`app = flask.Flask(__name__)` 这行代码的作用是创建一个 Flask 应用实例。`__name__` 是 Python 的内置变量,代表当前模块的名称。将 `__name__` 作为参数传递给 `Flask` 类的构造函数,有助于 Flask 确定应用的根路径,从而能够正确地查找静态文件、模板文件等资源。当运行一个 Flask 应用时,Flask 会依据这个根路径定位所需的资源文件。例如,在处理静态文件时,Flask 会在根路径下的 `static` 目录中查找相应文件。 ### 使用场景 - **小型 Web 应用开发**:对于初学者或者开发简单的 Web 应用,这行代码是创建应用的起点。以下是一个简单示例: ```python import flask app = flask.Flask(__name__) @app.route('/') def index(): return "Hello, World!" if __name__ == '__main__': app.run(debug=True) ``` 在这个示例中,创建了一个最基础的 Flask 应用,当访问应用的根路径时,会返回 `Hello, World!` 字符串。 - **大型项目模块化开发**:在大型项目中,可能会使用蓝图(Blueprint)来进行模块化开发。但依然需要使用 `flask.Flask(__name__)` 来创建主应用实例。例如: ```python import flask from my_blueprint import my_blueprint app = flask.Flask(__name__) app.register_blueprint(my_blueprint) if __name__ == '__main__': app.run(debug=True) ``` 这里的 `my_blueprint` 是一个蓝图对象,通过 `app.register_blueprint` 方法将其注册到主应用中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊虹AI笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值