flask学习一

Python 现阶段三大主流Web框架 Django Tornado Flask 对比

1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架

2.Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架

3.Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架

  • Django 通常用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成

  • Tornado 通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批

  • Flask 通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用

  • Django 优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费

  • Tornado 优点是异步,缺点是干净,连个Session都不支持

  • Flask 优点是精悍简单

from flask import Flask,request, redirect, render_template
app = Flask(__name__)      # 实例化Flask对象

@app.route('/')
def hello_world():
    return 'Hello World!'      # HttpResponse

@app.route("/redi")
def redi():
    return redirect("/")      # 会去找"/"的url

@app.route("/home")
def home():
    return render_template("home.html")      # 打开html

@app.route('/req', methods=["POST","GET"])
def req():
    # print(request.method)      # 请求方式
    # print(request.form)      # ImmutableMultiDict([('user', '123'), ('pwd', '123456')])查看form传的值
    # reg_dict = dict(request.form)
    # print(reg_dict)      # 以字典的形式查看{'user': '123', 'pwd': '123456'}
    # print(request.form['user'])      # 获取对应值
    # print(request.form.get('pwd'))      # 获取对应值
    # print(request.form.keys())      # <dict_keyiterator object at 0x000001E73D7DA6D8>

    print(request.args)      # 查看url传的值
    reg_dict = dict(request.form)
    print(reg_dict)
    print(request.args.values())      # <generator object MultiDict.values at 0x000001E3E3EAE948>
    print(list(request.args.values()))      # 可查看值
    print(list(request.args.keys()))      # 可查看键
    print(request.args.keys())      # <dict_keyiterator object at 0x000001E3E41F9D68>

    print(request.values)      # 查看所有的参数,不论url还是form
    print(request.values.get('id'))
    print(request.values['user'])
    print(request.values.to_dict())

    return "OK OldBoy"

if __name__ == '__main__':
    app.run()

request.args 与 request.form 的区别就是:

  • request.args 是获取url中的参数
  • request.form 是获取form表单中的参数

如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖

request.cookies 存在浏览器端的字符串儿也会一起带过来

  • 前提是你要开启浏览器的 cookies
  • request.cookies 是将cookies中信息读取出来

request.headres 用来获取本次请求的请求头

request.data 如果处理不了的就变成字符串儿存在data里面

  • 你一定要知道 request 是基于 mimetype 进行处理的
  • mimetype的类型 以及 字符串儿 : http://www.w3school.com.cn/media/media_mimeref.asp
  • 如果不属于上述类型的描述,request就会将无法处理的参数转为Json存入到 data 中
  • 其实我们可以将 request.data , json.loads 同样可以拿到里面的参数

request.files

  • 如果遇到文件上传的话,request.files 里面存的是你上传的文件,但是 Flask 在这个文件的操作中加了一定的封装,让操作变得极为简单
print(request.files)
print(request.files['file'])      # 获取文件
print(request.files.get('file'))
my_file = request.files['file']
my_file.save("ss.txt")      # 保存文件
    # 获取当前的url路径
    print(request.path)# /req
    # 当前url路径的上一级路径
    print(request.script_root) #
    # 当前url的全部路径
    print(request.url) # http://127.0.0.1:5000/req
    # 当前url的路径的上一级全部路径
    print(request.url_root ) # http://127.0.0.1:5000/

request.json

  • 如果在请求中写入了 "application/json" 使用 request.json 则返回json解析数据, 否则返回 None
posted @ 2020-07-17 14:59  小渣猫  阅读(101)  评论(0)    收藏  举报