Flask--request / response

request

request是请求数据。

在flask中request是需要导入,也可以称作公共对象

request.form

request.from 获取的FormData中的数据 -- 也就html中form表单

from flask import Flask, render_template, redirect, request, session

app = Flask(__name__)
app.debug = True
app.secret_key = '123'
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    print(request.form)    #查看request.form中的数据
    user = request.form.get('username')
    pwd = request.form.get('pwd')
    if user == '123' and pwd == '123':
        session['user'] = user
        return render_template('index.html', stu_dic=STUDENT_DICT)

结果:
  ImmutableMultiDict([('username', '123'), ('pwd', '123')])
这个数据类型看起来很高大上。其实取值方法和字典一点。可以用get / dict['key'] -- 建议用get
如果感觉看起来不是很习惯。可以使用request.form.to_dict()
print(request.form.to_dict())
结果:
    {'username': '123', 'pwd': '123'}
这种方法是将他变成普通字典的样子。这样你就可以玩的起飞啦~

request.args

request.arg 获取的是访问路径的参数

print(request.args)
结果:
    ImmutableMultiDict([('a', '1'), ('b', '2')])

 print(request.args.get("id")) # 获取URL中的参数
 print(request.args["id"]) # 获取URL中的参数
 print(request.args.to_dict()) # 获取URL中的参数 转换成 字典

request.files

request.files 获取的FormData中的 文件数据

<form action="" method="post" enctype="multipart/form-data">
    <button>ok</button>
    <input type="file" name="my_file">
</form>
要注意上传文件要写 enctype="multipart/form-data"


print(request.files)
结果:
    ImmutableMultiDict([('my_file', <FileStorage: 'test.png' ('image/png')>)])
可以通过字典取值方式取出文件

print(request.files.get('my_file'))  # 查看文件
my_file = request.files.get('my_file')  # 获取文件数据 
my_file.save(my_file.filename)  # 保存数据,括号里的参数是必填的,写上传文件的名字
保存在当前工作目录

request.url

request.url 获取的是 访问的全路径 -- 包括参数

print(request.url)
结果:
    http://127.0.0.1:5000/login?a=1&b=2

request.method

request.method 获取的是请求方式 -- 比如get / post ...

print(request.method)
结果:
    POST

request.path

reqeust.path 获取的是访问的路径 -- 不含参数

print(request.path)
结果:
    /login

request.values

request.valuse 获取的 Form 和 Args 中的数据

print(request.values)
结果:
    CombinedMultiDict([ImmutableMultiDict([('a', '1'), ('b', '2')]), ImmutableMultiDict([('username', '123'), ('pwd', '123')])])

request.environ

request.environ 获取的是 请求原始信息

request.base_url

request.base_url 获取的是 url的头信息 -- 不含参数

print(request.base_url)
结果:
    http://127.0.0.1:5000/login

Response

HttpResponse

HttpResponse 返回的是字符串

@app.route('/')
def home():
    return 'hello word'

render

render 返回的是模块

@app.route('/index')  # 参数写模板路径
def index():
    return render_template('index.html')

redirect

redrect 是重定向

@app.route('/')
def home():
    return redirect('/login')  # 参数写路径

 send_file

发送文件
打开并返回文件内容,
自动识别文件类型,
响应头中加入Content-type:文件类型
ps:当浏览器无法识别Content-type时,会下载文件

posted @ 2019-07-10 19:04  __Invoker  阅读(174)  评论(0编辑  收藏  举报