1. 程式人生 > 其它 >flask中幾種請求引數的獲取,以及cookie和session的操作

flask中幾種請求引數的獲取,以及cookie和session的操作

from flask import request, jsonify, make_response, session, abort
from flask.blueprints import Blueprint

from app import app
from converters import MobileConverter

admin_bp = Blueprint(name='admin',import_name=__name__)
# 設定session時需要使用secret_key
app.secret_key='abc'

# 使用手機號的路由轉換器
app.url_map.converters['mobiles']=MobileConverter
# url路徑引數
@admin_bp.route('/admin/<mobiles:mobile>')
def admin_login(mobile):
    return 'phone is {}'.format(mobile)

# 查詢字串  request.args
@admin_bp.route('/admin/queryparam')
def query_param():
    query = request.args
    name = query.get('name')
    id = query['id']
    return {'id':id,'name':name}

# 表單引數 request.form
# 設定cookie
@admin_bp.route('/login',methods=['post'])
def login():
    data = request.form
    name = data.get('name','lisi')
    id = data.get('id',None)
    data = {'success':True}
    response = make_response(data)
    response.set_cookie('name',name)
    response.set_cookie('id',id)
    # response.json({'success':True})
    return response

# json格式的引數 request.json
# 響應返回列表需要使用jsonify
@admin_bp.route('/json',methods=['post'])
def json():
    print(request.json)
    data = request.json
    name = data.get('name',None)
    id = data.get('id',None)
    result = [{'name':name,'id':id,'success':True},{'message':'niubi'}]
    return jsonify(result)

# 刪除cookie
@admin_bp.route('/logout',methods=['get'])
def logout():
    name = request.cookies.get('name')
    id = request.cookies.get('id')
    data = {'name':name,'id':id,'message':'退出成功'}
    response = make_response(data)
    response.delete_cookie('name')
    response.delete_cookie('id')
    return response

#獲取session中的資訊,也可以使用 .get()
@admin_bp.route('/index/login',methods=['post'])
def index_login():
    name = request.form.get('name')
    id = request.form.get('id')
    session['name']=name
    session['id']=id
    return jsonify({'name':name,'success':True})

# 刪除session
# abort丟擲異常
@admin_bp.route('/index/logout')
def index_logout():
    name = session.get('name')
    id = session.get('id')
    try:
        session.clear()
    except Exception as e:
        print(e)
        abort(404)
    if name is None:
        abort(404)
    return jsonify({'name':name,'success':True})

# 編輯丟擲404異常時的動作
@app.errorhandler(404)
def not_fond_page(e):
    return 'sorry, not fond page'