Flask常用方法函数汇总
1.客户端与服务端:
客户端:
#!/usr/bin/env python # encoding: utf-8 import requests import json,time def post_results(Download_link,Time): '''POST请求方式''' params = { 'download_link':Download_link, 'time':Time } print(params) r = requests.post('http://127.0.0.1:8000/subcontract', params=params) json_obj = json.loads(r.text) print(json_obj) def get_results(Download_link,Time): '''GET请求方式''' params = { 'download_link':Download_link, 'time':Time } print(params) r = requests.get('http://127.0.0.1:8000/subcontract', params=params) json_obj = json.loads(r.text) print(json_obj) if __name__ == '__main__': _time=int(time.time()) post_results('http://pkg.superdalan.com/game.pkg/download?pkgId=2990&f=chwyqmdmxttiOS_dalan_xy_dsdk_74_1.0.0_20200710_134530.apk',_time) get_results('http://pkg.superdalan.com/game.pkg/download?pkgId=2990&f=chwyqmdmxttiOS_dalan_xy_dsdk_74_1.0.0_20200710_134530.apk',_time)
服务端:
#!/usr/bin/env python # encoding: utf-8 import flask,json from flask import request, jsonify # 想获取到请求参数的话,就得用这个(jsonify可把字典返回json格式到客服端) server = flask.Flask(__name__) # 把这个python文件当做一个web服务 # 响应 def respond(flag, code, _method,msg=''): ret = { 'code': code, 'status': flag, 'msg': msg, 'method':_method } server.logger.info(ret)#日志记录响应结果 return jsonify(ret) @server.route('/subcontract', methods=['post','get']) # 接口的路径 def add_subcontract(): print('获取请求头',request.headers)#获取请求headers print('获取请求方式',request.method) print('获取请求cookes',request.cookies) print(request.headers.get("User-Agent"))##获取头部信息中User-Agent信息 print('获取URL',request.url)#包含主机+接口名称(get方式会连参数一起打印) print('获取接口名称',request.path) print('获取服务端ip:端口',request.url_root) if request.method=='POST': ##通过json提交 if bool((request.args).to_dict()): print('获取json全部请求参数:',request.args)#获取json请求参数 print('json请求参数转字典:',(request.args).to_dict()) print('获取指定参数的值',request.values.get('time'))#获取指定的请求参数值 print('获取json指定key的值',request.args['download_link']) print('获取json数据:',request.get_json()) print('获取json数据:', request.json) print('指定请求参数',request.args.get("time"))
##普通的key/value的形式以表单form提交 elif bool((request.form).to_dict()): print('指定请求参数',request.values.get('time')) print('指定请求参数',request.form.get('time')) print('获取表单全部请求参数',request.form) print('获取表单全部请求参数转字典',(request.form).to_dict()) print('获取表单全部请求参数转字典',request.values.to_dict()) return respond(True, 200, 'POST',msg="渠道包上传成功!") elif request.method=='GET': print('获取get全部参数',request.args) print('获取get请求参数转字典',request.args.to_dict()) print('获取get指定参数',request.args.get('download_link')) ''' request.args.get("key") 获取get请求参数,,regs用来获取url上面参数 request.values.get("key") 获取所有参数 ''' return respond(True, 200, 'GET',msg="渠道包上传成功!") if __name__ == '__main__': server.run(port=8000, debug=True, host='0.0.0.0')
2.flask日志:
#!/usr/bin/env python # -*- coding: utf-8 -*- ###_____________________________________每个函数内定义并获取日志___________________________________ from flask import Flask import logging app = Flask(__name__) @app.route('/chen') def chen(): '''每个函数内定义获取日志''' handler = logging.FileHandler(r'C:\Users\Administrator\Desktop\adb\flask.log')#保存文件路径 formatter= logging.Formatter("%(asctime)s - %(message)s")#定义格式 handler.setFormatter(formatter) app.logger.addHandler(handler)#添加日志 app.logger.warning('【warning】 log1111111111111111111') app.logger.debug('【debug】 调试与测试123123') return 'hello_chen123456' if __name__ == '__main__': app.debug = True app.run() ###_____________________________________初始化时定义日志(推荐)___________________________________ from flask import Flask import logging app = Flask(__name__) @app.route('/') def root(): app.logger.info('info log') app.logger.warning('warning log') return 'hello'
if __name__ == '__main__': app.debug = True handler = logging.FileHandler('flask.log')#生成的日志文件 app.logger.addHandler(handler)#添加日志 app.run()
###__________________________不存到文件直接打印(适合linux的nohup追加到文件)________________________ from flask import Flask import logging app = Flask(__name__) @app.route('/chen_all') def chen(): app.logger.warning('【warning】 这是警告日志') app.logger.debug('【debug】 调试与测试123123') return 'hello_chen123456' if __name__ == '__main__': app.debug = True app.run()
###______________________________________蓝图中使用日志_______________________________________
#需要导入current_app
from flask import current_app,Blueprint
current_app.logger.debug('【debug】 调试与测试123123')
3.flask返回jsonp格式:
#!/usr/bin/env python # encoding: utf-8 ''' json和jsonp的却别: 1.JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。 2.简单来说jsonp就是用来解决跨域访问的 什么是跨域: 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。 https://blog.csdn.net/weixin_66375317/article/details/124545878 ''' #_______________________________________________方法一:通过第三方插件直接返回jsonp____________________________________________ from flask import Flask, request from flask_json import FlaskJSON, as_json_p import simplejson app = Flask(__name__) json = FlaskJSON(app) @app.route('/quote_message') @as_json_p def quote_message(): jsoncallback=request.args['jsoncallback'] dict_ = {"Alice": "2341", "Beth": "9102", "Cecil": "3258"} return jsoncallback+"("+simplejson.dumps(dict_)+")" if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=8001) #_______________________________________________方式二:自己拼接格式____________________________________________________________ from flask import Flask, request import json app = Flask(__name__) @app.route('/') def func(): #res是需要返回的数据 res = { 'data': { 'data1': [], 'data2': [] } } callback = request.values.get('callback') #jsonp就是在字典上包装一下 return ''.join([ callback, '(', json.dumps(res), ');' ]) if __name__ == '__main__': app.run(port=8000, debug=True, host='0.0.0.0') ''' // jsonp一般用于前端ajax数据交互,javascript code如下: $.ajax({ url: "http://localhost:1234/", dataType: "jsonp", data: {}, success: function(res) { console.log(res); } }); '''
相关连接:
https://blog.csdn.net/tester_sc/article/details/118617901 ............................接口测试与Flask使用
https://www.cnblogs.com/fengff/p/9512045.html ...........................................flask记录日志 (https://www.cnblogs)
https://blog.csdn.net/fujiafeihudui/article/details/104472649/ ............flask自带日志记录(https://segmentfault.com)
https://blog.csdn.net/weixin_39731083/article/details/82262385 .................Flask Web开发,模板继承
https://blog.csdn.net/shirukai/article/details/91492574 .......................Flask从0到1快速后台服务开发
https://www.cnblogs.com/12345huangchun/p/10684782.html ......................Flask入门之完整项目搭建
https://blog.csdn.net/gfdfhjj/article/details/83869441 .......................ORM数据库操作,,ORM数据模型及flask汇总,,ORM增删改查
https://blog.csdn.net/weixin_45722313/article/details/121048571 ...............Python-flask 后台管理系统(组件使用、快速开发)
浙公网安备 33010602011771号