Flask 有两个主要依赖:路由、调试和Web 服务器网关接口(Web Server Gateway Interface,

WSGI)子系统由Werkzeug(http://werkzeug.pocoo.org/)提供;模板系统由Jinja2(http://

jinja.pocoo.org/)提供。Werkzeug 和Jinjia2 都是由Flask 的核心开发者开发而成。

一、 初始化 

from flask import Flask

app = Flask(__name__)

Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python 的__name__ 变量就是所需的值。所有Flask 程序都必须创建一个程序实例。

将构造函数的name 参数传给Flask 程序,这一点可能会让Flask 开发新手心生迷惑。Flask 用这个参数决定程序的根目录,以便稍后能够找到相对于程序根目录的资源文件位置。

二、路由

@app.route('/')

def index():

return '<h1>Hello World!</h1>'

使用程序实例提供的  “app.route” 修饰器,把修饰的函数注册为路由。index()视图函数

可以返回html。

 

动态url

@app.route('/user/<name>')

def user(name):

return '<h1>Hello, %s!</h1>' % name

尖括号中的内容就是动态部分,任何能匹配静态部分的URL 都会映射到这个路由上。调用视图函数时,Flask 会将动态部分作为参数传入函数。

三、启动 

if __name__ == '__main__':

app.run(debug=True)

也可以不加debug模式  app.run() 还可以加监听端口等。

四、模板

默认情况下,Flask 在程序文件夹中的templates 子文件夹中寻找模板。

模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请求的上下文中才能知道。使用真实值替换变量,再返回最终得到的响应字符串,这一过程称为渲染。为了渲染模板,Flask 使用了一个名为Jinja2 的强大模板引擎。

例如:

templates/user.html:Jinja2 模板

<h1>Hello, ` name `!</h1>

hello.py

from flask import Flask, render_template

# ...

@app.route('/user/<name>')

def user(name):

return render_template('user.html', name=name)

Flask 提供的render_template 函数把Jinja2 模板引擎集成到了程序中。render_template 函数的第一个参数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。在这段代码中,第二个模板收到一个名为 name 的变量。

模板中使用的` name ` 结构表示一个变量,它是一种特殊的占位符,告诉模板引擎这个位置的值从渲染模板时使用的数据中获取。

ja2Jin 能识别所有类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。

在模板中还可以使用条件控制语句或者for循环等 。

例如;

{% if user %}

Hello, ` user `!

{% else %}

Hello, Stranger!

{% endif %}

<ul>

{% for comment in comments %}

<li>` comment `</li>

{% endfor %}

</ul>