湖南省建设工程造价管理站网站,网站建设运营公司大全,cms建站,进博会上海20221.python 现阶段三大主流web框架Django Tornado Flask的对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架 2.Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属…1.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 优点是精悍简单,缺点是稳定性较差 2.简单的运行一个flask页面 from flask import Flaskapp Flask(name)app.route(/)def index():return Hello Worldapp.run(debugTrue) 3.Response的三元素 HttpResponsereturn “Hello World” 直接返回字符串 from flask import render_templaterender return render_template(login.html)与Django中的 render 使用一致 返回模板由浏览器渲染 from flask import redirectredirect return redirect(/login) # 302跳转重定向URL Flask独有的 1.from flask import jsonify retrun jsonify({name:111}) # 返回json标准的字符串 Content-Type:application/json app.config[JSON_AS_ASCII] False # 解决jsonify不能返回汉字问题 json.dumps(d, ensure_asciiFalse) 2.from flask import send_file return send_file(path) #send_file会打开文件并返回文件内容自动识别文件格式 4.flask中的request app.route(/login, methods[POST, GET]) # 默认的请求方式只有get在加上menthods参数后会根据添加的请求方式来处理可以是元组或列表形式 request.method # 请求方式request.form # 存放FormData中的数据 to_dict 序列化成字典request.args # 获取URL中的数据 to_dict 序列化成字典request.url # 访问的完整路径request.path # 路由地址request.full_path#带参数的路由地址request.host # 主机地址request.values # 获取 FormData and URL中的数据 不要用to_dictrequest.json # 如果提交时请求头中的Content-Type:application/json 字典操作request.data # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byterequest.cookies # 获取Cookie中的数据request.headers # 获取请求头request.files # 序列化文件存储 save() my_file request.files.get(my_file) #获取到上传的文件
my_file.save(my_file.filename) #将文件保存在当前环境最少指定一个文件名 5.jinja2 {{}} 引用变量 执行函数 {%%} 逻辑代码 tag input typetext nameusername
tag Markup(tag) # 转变成安全标签字符串 #也可以在前端用 | safe app.template_global() #全局的函数
def func(a, b):return a b{{ func(5,6) }}app.template_filter() #
def fil(a, b, c):return abc{{ 1 | fil(1,2) }} #也可以在前端定义函数并调用
{% macro create_input(na,ty) %}{{ na }}: input type{{ ty }} name{{ na }}
{% endmacro %}{{ create_input(username, text) }} 6.flask中的session app.secret_key 加密字符串 #用于序列化和反序列化session信息 由于Flask中默认Session 存放位置 - 客户端的Cookies中 所以Session需要加密 用到 secret_key 请求进入视图函数 带上cookie 将Session从cookie序列化出来 通过secret_key 反序列化成字典 转载于:https://www.cnblogs.com/qq849784670/p/10235614.html