Python-Flask开发笔记

Flask介绍

Flask 是典型的微框架,作为 Web 框架来说,它仅保留了核心功能:请求响应处理和模板渲染。这两类功能分别由 Werkzeug(WSGI 工具库)完成和 Jinja(模板渲染库)完成

demo分析

1
2
3
4
5
6
7
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
return 'Welcome to My Watchlist!'
  1. 首先我们从 flask 包导入 Flask 类,通过实例化这个类,创建一个程序对象 app:
  2. 然后定义一个视图函数,其实就是请求处理函数,它可以处理请求。
  3. 配置路由:我们使用 app.route() 装饰器来为这个函数绑定对应的 URL,当用户在浏览器访问这个 URL 的时候,就会触发这个函数,获取返回值,并把返回值显示到浏览器窗口

整个请求的处理过程如下所示:

  1. 当用户在浏览器地址栏访问这个地址,在这里即 http://localhost:5000/
  2. 服务器解析请求,发现请求 URL 匹配的 URL 规则是 /,因此调用对应的处理函数 hello()
  3. 获取 hello() 函数的返回值,处理后返回给客户端(浏览器)
  4. 浏览器接受响应,将其显示在窗口上

模板

在一般的 Web 程序里,访问一个地址通常会返回一个包含各类信息的 HTML 页面。因为我们的程序是动态的,页面中的某些信息需要根据不同的情况来进行调整,比如对登录和未登录用户显示不同的信息,所以页面需要在用户访问时根据程序逻辑动态生成。
我们把包含变量和运算逻辑的 HTML 或其他格式的文本叫做模板,执行这些变量替换和逻辑计算工作的过程被称为渲染,这个工作由我们这一章要学习使用的模板渲染引擎——Jinja2 来完成。

按照默认的设置,Flask 会从程序实例所在模块同级目录的 templates 文件夹中寻找模板

模板基本语法

在模板里,你需要添加特定的定界符将 Jinja2 语句和变量标记出来,下面是三种常用的定界符:

1
2
3
4
5
6
{{ ... }} 用来标记变量。
{% ... %} 用来标记语句,比如 if 语句,for 语句等。
{# ... #} 用来写注释。

movie.title = movie['title']
movies|length = len(movies)

渲染模板

返回渲染好的模板作为响应

1
2
3
4
5
6
7
from flask import Flask, render_template

# ...

@app.route('/')
def index():
return render_template('index.html', name=name, movies=movies)

render_template() 函数可以把模板渲染出来,参数为模板文件名,和模板内部使用的变量作为关键字参数


Python-Flask开发笔记
https://vendestine.com/flask-note
Author
Wenzhe Li
Posted on
November 24, 2022
Licensed under