Response
- # -*- coding: utf-8 -*-
- from flask import Flask, redirect, render_template, jsonify, send_file
- app = Flask(__name__)
- @app.route('/')
- def index():
- return redirect('/login') # 跳转,重定向
- @app.route('/login')
- def login():
- return render_template('login.html') # 返回模板有浏览器渲染
- @app.route('/json')
- def json():
- data = {
- "name": 'peach'
- }
- return jsonify(data) # 返回json标准字符串
- @app.route('/send_files')
- def send_files():
- return send_file('Dockerfile') # 返回文件(打开文件,并返回文件内容,自动识别)
- app.run(host='0.0.0.0', debug=True)
REQUEST
- Request是全局的需要导入
- from flask import Flask, request, render_template
- Request中from表单中取数据有两种方式
- 方式一:
- print(request.form.get('username'))
- 方式二:
- print(request.form['username'])
- 两者的区别,当没有'username'的时候,方式二会报错:Keyerror
视图代码如下:
正确取值:
KerError错误:
Request对象参数解析
- @app.route('/login', methods=["POST", 'GET'])
- def login():
- print(request.path) # 获取请求地址
- print(request.url) # 获取完整http url
- print(request.host_url) # http主机地址端口
- print(request.host) # 主机地址端口
- print(request.method) # 获取请求对象
- print(request.form) # 请求表单内数据, request.form.to_dict() 之间转换为字典格式
- print(request.args) # 请求地址参数, 提取可以用request.args.get()
- print(request.values) # 所有的args地址参数和form表单内参数 to_dict() 之间转换为字典格式,通常用来查看数据
- print(request.json) # json数据,如果请求头的类型是json,自动把form的数据序列化为json
- print(request.data) # 如果请求头的类型是无法识别的时候,请求体的数据将原始储存,是bytes
- print(request.cookies) # 获取cookies
- print(request.headers) # 获取请求头
- my_file = request.files.get('my-file')
- print(my_file)
- my_file.save(my_file.filename) # 保存图片
- return render_template('login.html')
HTML:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>LOGIN</title>
- </head>
- <body>
- <form action="/login?a=1&b=2", method="post", enctype="multipart/form-data">
- 用户名<input type="text", name="username">
- 密码<input type="text", name="password">
- 文件<input type="file" name="my-file">
- <input type="submit", value="登陆">
- </form>
- </body>
- </html>
运行结果如下:
因为我用的是docker环境,文件保存如下: