flask中幾種請求引數的獲取,以及cookie和session的操作
阿新 • • 發佈:2021-07-21
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'