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

上一篇下一篇

猜你喜欢

热点阅读