码迷,mamicode.com
首页 > 其他好文 > 详细

【Flask三剑客与request】 񑂠

时间:2019-08-18 19:25:24      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:lock   orm   字符   完整路径   turn   前端   inpu   目的   开始   

原文: http://blog.gqylpy.com/gqy/354

"Flask三剑客1

  • HttpResponse
  • Redirect
  • render_template
HttpResponse
@app.route('/')  # route用于指定url路径
def index():
    return 'Hello World'  # HttpResponse

这里直接返回结果,其内部调用的就是HttpResponse方法.
Flask中的HttpResponse在我们看来其实就是直接返回字符串.

Redirect
from flask import redirect
@app.route('/home')
def home():
    return redirect('/index')  # 将跳转至url路径为"/index"的页面

当访问/home这个地址时,视图函数会触发redirect(‘/‘)方法,将跳转至url地址为/index的页面,同时触发/index路径对应的视图函数.

render_template

在开始之前,请先在你当前项目的根目录下创建一个名为templates目录,用于存放模版文件.
这是Flask框架的规则,默认情况下目录名必须为templates,否则可能会遇到Jinja2的报错.
你也可以在实例化app时通过template_folder参数指定新的模板目录。

from flask import render_template
@app.route('/login')
def login():
    return render_template('login.html')  # 将返回模板目录templates下的login.html页面

这里我们要说一下 jsonify 与 send_file 方法
*
jsonify**
jsonify方法返回的是json类型的数据,且会使Centent-Type: application/json.

from flask import jsonify
@app.route('/json')
def json():
    return jsonify({"name": "zyk", "sex": "boy"}) 

send_file
send_file可将文本内容,图片,视频等信息放到网页上.

from flask import send_file
@app.route('/text')
def text():
    return send_file("文件路径")
    # 其文件可以是文本、图片、视频

request

  • method 判断请求的类型
  • args GET请求的数据,可使用 to_dict 将其转为字典
  • form POST 请求的数据,需要在 route 中允许 POST 请求的数据:methods=[‘POST‘]
  • headers 获取请求头中的信息
  • json 如果在请求头中指定了 Content-Typeapplication/json,将返回 json 数据,否则返回空
  • data 存放非 mimetype 类型的数据,即 Content-Type 无法解析的数据,原始数据,其类型为 bytes
  • path 当前的url路径,例如:/long
  • url 完整的url路径
  • script_root 返回当前url路径的上一级路径
  • url_root 当前url路径的上一级的完整路径
  • host 访问主机的url
  • host_url 访问主机的完整url
  • values 获取说有类型请求的数据
  • files 获取上传的文件
  • cookies 获取 cookies 信息
  • environ 所有数据

request 是基于 mimetype 进行处理的,如果不属于 mimetype 类型的数据,request 会将其转化为 Json 格式并存到data中,其实我们可以通过 request.datajson.loads 拿到同样的数据。

上传文件示例

如果遇到文件上传的话,request.files 里面存的是你上传的文件,但是 Flask 在这个文件的操作中加了一定的封装,让操作变得极为简单




前端代码:

<form method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="提交">
</form>


后端代码:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/load', methods=['GET', 'POST'])  # methods=['GET', 'POST']  允许GET, POST请求
def load():
    if request.method == 'POST':
        # print(request.files)  # ImmutableMultiDict([('file', <FileStorage: '会心一笑.png' ('image/png')>)])
        # print(request.files['file'])  # <FileStorage: '会心一笑.png' ('image/png')>
        file = request.files['file']
        file.save('img.png')  # save保存文件
        return 'is ok'
    return render_template('load.html')

app.run('0.0.0.0', 5000, debug=True)


这样我们就成功的上传了一个名叫 "img.png" 的文件了,操作还是很简单的.
"

原文: http://blog.gqylpy.com/gqy/354


  1. 回到顶部?

【Flask三剑客与request】 񑂠

标签:lock   orm   字符   完整路径   turn   前端   inpu   目的   开始   

原文地址:https://www.cnblogs.com/bbb001/p/11373371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!