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 后台管理系统(组件使用、快速开发)

 

posted on 2021-06-23 10:43  chen_2987  阅读(747)  评论(0)    收藏  举报

导航