flask之request
flask的request
每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的,看看代码中怎么用...
from flask import Flask
from flask import request
from flask import render_template
app = Flask(__name__)
@app.route('/')
def aa():
return render_template('formss.html')
@app.route('/rep', methods=['POST']) # 表示只允许post请求,是个列表就意味着可以允许多种请求方式
def rep():
print(request.values) # 可以同时获取ulr和form的参数 CombinedMultiDict([ImmutableMultiDict([('id', '1'), ('age', '12')]),
# ImmutableMultiDict([('user', '小明'), ('pwd', '123')])])
print(request.values.get('id'))
print(request.values['user'])
print(request.values.to_dict()) # 直接将url和form的内容转换成字典
print(request.method) # 用来验证请求方式
print(request.form) # 类似字典的东西 ImmutableMultiDict([('user', '小明'), ('pwd', '123')])
print(request.form['user']) # 字典取值 小明
print(request.form['pwd']) # 字典取值 123
print(list(request.form.keys())) # 拿出所有的value值
return 'OK'
@app.route('/gg', methods=['GET', 'POST'])
def gg():
print(request.args) # 获取url中的参数 也是一个类似字典 ImmutableMultiDict([('id', '1'), ('age', '18')])
# request.args与request.form 的区别是 一个是获取url的参数值 一个是是获取表单的内容 都是一个类似的字典
dic = dict(request.args)
print(dic) # {'id': '1', 'age': '18'}
print(request.headers)
'''
Host: 127.0.0.1:5000
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
'''
print(request.data) # request.data 之 如果处理不了的就变成字符串儿存在data里面
'''
b''
'''
return 'ok'
# request 是基于 mimetype 进行处理的mimetype的类型 以及 字符串儿 : http://www.w3school.com.cn/media/media_mimeref.asp
#
# 如果不属于上述类型的描述,request就会将无法处理的参数转为Json存入到 data 中
#
# 其实我们可以将 request.data , json.loads 同样可以拿到里面的参数
# 注意这里的坑来啦! 坑来啦!
# 如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖
# request.cookies 是将储存在浏览器中的cookie读取出来
@app.route('/a')
def file():
return render_template('forms1.html')
@app.route('/file',methods=['POST'])
def form1():
print(request.files)
print(request.files['file'])
my_file = request.files['file']
my_file.save('douzi.txt')
return 'OK'
@app.route('/path')
def path_():
print(request.path) #获取当前的url路径 /path
print(request.script_root) #获取当前url的上一级路径
print(request.url) #获取当前的url的全部路径
print(request.url_root) #获取当前的url上一级的全部路径
return 'ok'
# request.json 之 前提你得告诉是json
# 如果在请求中写入了 "application/json" 使用 request.json 则返回json解析数据, 否则返回 None
if __name__ == '__main__':
app.run('127.0.0.1', 5000, debug=True)