学习博客
https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
虚拟环境:python版本独立,不同项目可能用到不同版本;
实战入门到。。
创建文件夹
- mkdir microblog
- cd microblog
创建虚拟环境
- python -m venv venv(venv:自定义的虚拟环境名称)
激活并进入虚拟环境
- source venv/bin/active
- venv Scripts\active (windows)
安装Flask
- pip install flask
验证安装成功
- import flask
HelloWorld 应用
创建一个名为app的包来存放整个应用吧。记得切换到microblog目录下
- mkdir app
- 创建init.py文件
- (包含init.py文件的子目录被视为一个可导入的包。 当你导入一个包时,init.py会执行并定义这个包暴露给外界的属性。)
- 在init.py输入如下代码
# aap/__init__.py
from flask import Flask
app = Flask(__name__)
from app import routes
"""
其一,这里有两个实体名为app。 app包由app目录和__init__.py脚本来定义构成,并在from app import
routes语句中被引用。 app变量被定义为__init__.py脚本中的Flask类的一个实例,以至于它成为app包的属性。
其二,routes模块是在底部导入的,而不是在脚本的顶部。 最下面的导入是解决循环导入的问题,这是Flask应用程序的常见问题。
你将会看到routes模块需要导入在这个脚本中定义的app变量,因此将routes的导入放在底部可以避免由于这两个文件之间的相互引用而导致的错误。
"""
- 在app下创建一个routes.py文件
# app/routes.py
# 应用程序路由的处理逻辑被编写为Python函数,称为视图函数。 视图函数被映射到一个或多个路由URL
from app import app
@app.route('/')
@app.route('/index')
def index():
return "hello world!"
"""
有两个装饰器,它们将URL /和/index索引关联到这个函数。 这意味着,当Web浏览器请求这两个URL中的任何一个时,Flask将调用该函数并将其返回值作为响应传递回浏览器。
"""
- 实现应用程序,microblog目录下创建一个命名为microblog.py的Python脚本
from app import app
- 目录结构树
microblog/
venv/
app/
__init__.py
routes.py
microblog.py
- 运行之前,需要通过设置FLASK_APP环境变量告诉Flask如何导入它:
(venv) $ export FLASK_APP=microblog.py
# Microsoft Windows操作系统,在上面的命令中使用set替换export
- 运行你的第一个Web应用
# 服务启动后将处于阻塞监听状态,将等待客户端连接。 flask run的输出表明服务器正在运行在IP地址127.0.0.1上,这是本机的回环IP地址
(venv) $ flask run
* Serving Flask app "microblog"
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
- 在终端会话中直接设置的环境变量不会永久生效,因此你不得不在每次新开终端时设定 FLASK_APP 环境变量,从 1.0 版本开始,Flask 允许你设置只会在运行flask命令时自动注册生效的环境变量,要实现这点,你需要安装 python-dotenv
(venv) $ pip install python-dotenv
- 在终端会话中设置环境变量FLASK_APP=microblog.py,然后执行flask run命令来运行应用
FLASK_APP=microblog.py
设置环境变量FLASK_APP=microblog.py
- 包含这个应用的Web服务启动之后,你可以通过在Web浏览器的地址栏中键入URL http://localhost:5000/ 来验证。