Flask学习笔记:创建一个简单的Flask应用

1. 做好准备工作
  • 进入项目主目录
  • 激活虚拟环境

2. 创建app包:

在flask中,含有名为 __init__.py 文件的子目录被视为包,可以被导入。

在命令行输入以下命令,创建一个名为app的目录:

(venv) $ mkdir app

在app目录中创建一个名为__init__.py的文件,包含以下代码:

app/__init__.py

from flask import Flask

app = Flask(__name__)

from app import routes

上面的脚本从flask包中导入了Flask类,并创建了一个应用实例。传递给Flask类的 __name__ 变量是一个Python预定义变量,这个变量被设置为使用它的模块的名称。当Flask需要加载相关资源如模板文件时,会将此处传递的模块的位置作为起点。在实际使用中,一般都会通过传递__name__变量配置Flask。然后,应用导入了现在还不存在的routes模块。

此处出现了2个app。app所在的目录和__init__.py 脚本定义定义了app包,并由 from app import routes语句引用。而app变量则是__init__.py 脚本中Flask类的实例,使之成为app包的一员。

另一个要注意的是routes模块是在脚本底部而不是顶部导入的。底部导入是循环导入的替代方法,是Flask应用的常见问题。因为接下来routes模块需要导入这个脚本中定义的app变量,所以在底部导入可以避免两个文件互相引用导致的错误。

那么routes模块是干什么的呢?在Flask中,应用路由的处理器是以Python函数的形式写的,叫做view functions(视图函数)。视图函数映射到一个或多个的路由URL,这样Flask才知道当客户端请求给定url时要执行的逻辑。

把这个视图函数写到名为app目录中名为routes.py的新模块中:

from app import app

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

这个视图函数很简单,返回一个欢迎的字符串。函数上面的两个@app.route叫做装饰器,这是python语言的特性。装饰器装饰它后面的函数。装饰器的常见模式是将函数注册为某些事件的回调。在这个例子中,@app.route 装饰器在以参数形式给定的URL和函数之间创建关联。 这个例子的两个装饰器将URL / 和 /index 关联到这个函数。也就是说当web浏览器请求这两个URL时,Flask会调用这个函数并将它的返回值作为响应传回浏览器。

现在,创建一个名为manage.py的脚本,然后导入应用实例:

from app import app

这里又出现了2个app,Flask应用的实例叫做app,是app包的一员。 from app import app语句导入了app包中的app变量。感觉困惑的话可以把包名或者变量名改成别的。

现在,项目结构应该是这样的:

webapp/
  venv/
  app/
    __init__.py
    routes.py
  manage.py

像这样设置环境变量:

(venv) $ export FLASK_APP=manage.py

windows就比较坑爹了,官方文档中说这么写:

(venv) $ set FLASK_APP=manage.py

但是实际也许不会成功,会提示以下错误:

Usage: flask run [OPTIONS]

Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.

For more information see http://flask.pocoo.org/docs/latest/quickstart/

我用的是PowerShell,网上找了一些方法,都不成功,后来按照Stack Overflow上这个方法来就成功了:

(venv) $env:FLASK_APP = "manage.py"

然后,在命令行输入flask run命令就可以运行flask了:

(venv) $ flask run
 * Serving Flask app "projectname"
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

服务在IP地址127.0.0.1上运行,也叫localhost,这是本地的。网络服务器监听指定端口上的链接,在生产web服务器上部署的应用通常在443端口上监听,如果没有加密,有时是80端口,但对这些端口的访问需要管理员权限。由于目前程序在生产环境中运行,所以用的是5000端口,现在打开web浏览器,在地址栏输入以下URL:

http://localhost:5000/

或者这个URL:

http://localhost:5000/index

你可能感兴趣的:(Flask学习笔记:创建一个简单的Flask应用)