iami233
iami233
文章156
标签37
分类4

文章分类

文章归档

Flask 框架学习记录

Flask 框架学习记录

Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2模板引擎。

主要是为了写 edusrc用户信息统计脚本 写的很浅显,堪堪入门吧…

安装

1
pip install flask

初始化

先导入一个 Flask 类的对象,并创建一个该类的实例

1
2
from flask import Flask
app = Flask(__name__)

路由

路由就不用多说了,用来把为用户请求的 URL 找出其对应的 视图函数

1
2
3
@app.route('/')
def index():
return 'Hello,flask!'

当我们访问主页 / 的时候,页面就会自动调用 index() 函数,显示 Hello,flask!

路径传参

格式:url/参数,然后再 视图函数 中接收参数

1
2
3
4
5
6
7
@app.route('/')
def index():
return 'Hello,flask!'

@app.route('/<username>')
def name(username):
return 'Hello,' + str(username)

这样访问 url/iami233 的时候页面就会显示 Hello,iami233,当然我们也可以限制 <username> 的传入类型(<int:userid>)。

  • string(缺省值): 接受任何 不包含斜杠的文本
  • int : 接受 正整数
  • float : 接受 正浮点数
  • path : 类似 string,但可以包含斜杠
  • uuid : 接受 UUID 字符串

HTTP方法

默认情况下路由只响应 GET 请求。 不过可以使用 route() 装饰器的 methods 参数来处理不同的 HTTP 方法。

1
2
3
4
5
6
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()

渲染模板

使用 render_template() 方法可以渲染模板,我们只要提供 模板名称 和需要作为 参数 传递给模板的 变量 即可。

1
2
3
4
5
6
7
8
from flask import render_template
# 注意我们要导入render_template

@app.route('/hello/<username>')
def hello(username):
return render_template('hello.html',
username = username
)

html 模板需要放在 templates 目录中

1
2
3
/main.py
/templates
/hello.html

模板示例

1
2
3
<!doctype html>
<title>Hello Flask</title>
<h1>Hello, {{username}}</h1>

jinja2

Flask 使用 Jinja 2 作为 模板引擎,在 Jinja 2 中,存在三种语法

1
2
3
{% %} 控制结构
{{ }} 变量取值
{# #}

一些博主常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 循环输出变量data
{% for i in data %}
...
{% endfor %}

# 判断变量data的长度是否小于五
# 如果小于则根据实际长度与5的差值进行循环
{% if data | length < 5 %}
{% for i in range(5 - data | length) %}
...
{% endfor %}
{% endif %}

# 条件控制

{% if 条件1 %}
...
{% elif 条件2 %}
...
{% else %}
...
{% endif %}

# 循环控制

{% for i in data %}
...
{% else %}
...
{% endfor %}

完整示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from flask import Flask, render_template

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

@app.route('/<username>')
def name(username):
return 'Hello,' + str(username)

@app.route('/hello/<username>')
def hello(username):
return render_template('hello.html',
username = username
)

if __name__ == '__main__':
app.run()
本文作者:iami233
本文链接:https://5ime.cn/flask.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可