Python Web框架 Flask - Flask
2018-12-17 本文已影响0人
莫名ypc
python常用框架
Django + Flask + Tornado + Twisted
Flask微框架,只提供核心的库
创建第一个Flask项目
创建虚拟环境
virtualenv --no-site-packages flaskenv
激活虚拟环境、安装flask
pip install flask
创建第一个app
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
使用flask-script的Manager启动
安装flask-script
pip install flask-script
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
@app.route('/hello/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
manage = Manager(app)
# python app.py runserver -h 0.0.0.0 -p 8080 -d
# app.run(port=8080, debug=True)
manage.run()
启动
python app.py runserver -h 0.0.0.0 -p 8080 -d
-h 主机
-p 端口
-d 启用debug模式
指定路由与接收参数
指定方式:/grade/<int:id>/
接收到的参数类型为int,不知道类型时接收类型为str
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
@app.route('/hello/')
def hello_world():
return 'Hello World!'
# 路由:'/stu/<id>/', http://127.0.0.1:5000/stu/10/
@app.route('/stu/<id>/')
def stu(id):
# 接受的id参数为字符串
return 'stu id: %s' % id
@app.route('/grade/<int:id>/')
def grade(id):
# 接受的id参数类型为int
return 'grade id: %d' % id
if __name__ == '__main__':
manage = Manager(app)
# python app.py runserver -h 0.0.0.0 -p 8080 -d
# app.run(port=8080, debug=True)
manage.run()
string - 字符串
int - 整型
float - 浮点型
path - 路由后面的所有内容
uuid - uuid类型的字符串
Flask蓝图
安装
pip install flask-blueprint
生成实例化对象
blue = Blueprint(‘first’,__name__)
管理路由
blue.route('/')
注册
app.register_blueprint(blue, url_prefix='/user')
反向解析
url_for
@blueprint.route('/redirect/')
def my_redirect():
# redirect:跳转
# url_for: 反向解析
# 'first.hello': 蓝图第一个参数,跳转到的函数名
return redirect(url_for('first.hello'))
带参数的路由反向解析
@blueprint.route('/stu/<id>/')
def stu(id):
return 'hello stu: %s' % id
@blueprint.route('/redirect_id/')
def stu_redirect():
return redirect(url_for('first.stu', id=3))
response响应
创建响应、创建cookie、清除cookie
set_cookie - 设置cookie
delete_cookie - 清除cookie
@blueprint.route('/make_response/')
def my_response():
# make_response创建响应
# 第一个参数:响应内容
# 第二个参数:响应状态码
res = make_response('<h2>今天天气很好</h2>', 200)
# 设置cookie, max_age以秒为单位,expires以datetime为单位
res.set_cookie('token', '123456', max_age=6000)
return res
@blueprint.route('/del_cookie/')
def del_cookie():
res = make_response('<h2>删除cookie</h2>')
res.delete_cookie('token')
return res
request(请求)
请求方式
通过methods参数设置请求方式
@blueprint.route('/req/', methods=['GET', 'POST'])
获取请求中的参数
获取get参数:request.args
获取get请求中传递的参数,request.args
获取GET请求中name=1&name=2中的name的参数,request.args.getlist('name')
获取post参数:request.post
获取POST请求中传递的参数,request.form
获取值:request.form.get(key)或request.form.getlist(key)
获取路由:request.path
获取文件:request.files
@blueprint.route('/req/', methods=['GET', 'POST'])
def req():
if request.method == 'GET':
# 获取get请求中传递的参数,request.args
# 获取GET请求中name=1&name=2中的name的参数,request.args.getlist('name')
return 'hello get'
if request.method == 'POST':
# 获取POST请求中传递的参数,request.form
# 获取值:request.form.get(key)或request.form.getlist(key)
return 'hello post'
session
加密:app.secret_key = '123'
session['user_id'] = 1