Flask 框架学习记录
3 min read
Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2模板引擎。
主要是为了写 edusrc用户信息统计脚本 写的很浅显,堪堪入门吧…
安装
pip install flask
初始化
先导入一个 Flask
类的对象,并创建一个该类的实例
from flask import Flask
app = Flask(__name__)
路由
路由就不用多说了,用来把为用户请求的 URL
找出其对应的 视图函数
@app.route('/')
def index():
return 'Hello,flask!'
当我们访问主页 /
的时候,页面就会自动调用 index()
函数,显示 Hello,flask!
路径传参
格式:url/参数
,然后再 视图函数
中接收参数
@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
方法。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
渲染模板
使用 render_template()
方法可以渲染模板,我们只要提供 模板名称
和需要作为 参数
传递给模板的 变量
即可。
from flask import render_template
# 注意我们要导入render_template
@app.route('/hello/<username>')
def hello(username):
return render_template('hello.html',
username = username
)
html
模板需要放在 templates
目录中
/main.py
/templates
/hello.html
模板示例
<!doctype html>
<title>Hello Flask</title>
<h1>Hello, {{username}}</h1>
jinja2
Flask
使用 Jinja 2
作为 模板引擎
,在 Jinja 2
中,存在三种语法
{% %} 控制结构
{{ }} 变量取值
{# #}
一些博主常用操作
# 循环输出变量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 %}
完整示例
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()