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 Flask

app = Flask(name)

@app.route("/")

def index():

    return "Hello World"

app.run(debug=True)

3.Response的三元素

HttpResponse:return “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_ascii=False)

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_dict

request.json  # 如果提交时请求头中的Content-Type:application/json 字典操作

request.data  # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte

request.cookies # 获取Cookie中的数据

request.headers # 获取请求头

request.files # 序列化文件存储 save()
my_file = request.files.get("my_file") #获取到上传的文件
my_file.save(my_file.filename) #将文件保存在当前环境,最少指定一个文件名

5.jinja2

{{}} 引用变量 执行函数

{%%} 逻辑代码

tag = "<input type='text' name='username'>"
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 a+b+c {{ 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 反序列化成字典

flask的基础1的更多相关文章

  1. 知了课堂 Python Flask零基础 笔记整理

    目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...

  2. 超实用的Flask入门基础教程,新手必备!

    Flask入门基础教程 Flask简介 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发人员分工合 ...

  3. 2、flask之基础知识点

    本篇导航: 路由系统 视图函数 请求与响应 模版语法 session 蓝图(blueprint).闪现 (flash) 扩展 一.路由系统 1.可传入参数: @app.route('/user/< ...

  4. flask的基础认识

    刚开始学习flask基础知识,有了一点点的认识,所以在此大概写一下自己的理解,详细步骤和功能在代码段介绍: from flask import Flask,render_template,reques ...

  5. flask之基础知识点

    本篇导航: 路由系统 视图函数 请求与响应 模版语法 session 蓝图(blueprint).闪现 (flash) 扩展 一.路由系统 1.可传入参数: @app.route('/user/< ...

  6. 云效(阿里云)流水线 + nginx + uWsgi + flask + python3 基础环境搭建 --备忘

    一.开发环境搭建 1.安装python3 yum -y groupinstall "Development tools" yum -y install zlib-devel bzi ...

  7. Flask的基础二

    一.session 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使用会话,你需 ...

  8. Flask框架基础功能

    引言 本文简单汇总Flask框架几大基础功能,包括: 路由系统 模板 数据库 几种常用Flask库 一个简单的Flask事例 Flask是一个基于Python,依赖Jinja2模板和WSGI服务的框架 ...

  9. Flask框架基础--第一篇

    1.flask框架和其他几种框架的优缺点对比 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : ...

  10. Flask开发基础

    Flask是一个使用Python编写的轻量级Web应用框架. 模板引擎使用的Jinja2 Flask框架简单易学,但是其保留了扩展的弹性,可以使用Flask-extension 加入ORM ,窗体验证 ...

随机推荐

  1. mysql查询之 连续出现的数字,重复出现的邮箱,删除重复的电子邮箱

    1.编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | ...

  2. Java中缓存的介绍

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  3. 微设计基础架构(MDI)

    微设计基础架构(MDI) 了解微设计基础架构(MDI)的概念,它们如何帮助开发,以及它们与DevOps和微服务等技术的关系. 技术决策既困难又严肃,可以决定项目的成败.如何找到合适的技术栈?“微设计基 ...

  4. LeetCode 556. 下一个更大元素 III(Next Greater Element III)

    556. 下一个更大元素 III 556. Next Greater Element III 题目描述 给定一个 32 位正整数 n,你需要找到最小的 32 位整数,其与 n 中存在的位数完全相同,并 ...

  5. CodeForces-1152C-Neko does Maths

    C. Neko does Maths time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

  6. UiPath-level3-test1 and test2 答案

    需要的请联系QQ 1257123976   5-10元一份,必过

  7. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  8. jQuery框架"风云榜"案例

    <title>电影风云榜</title> <style> /*清空默认样式*/ *{padding:0;margin:0;border:0;list-style:n ...

  9. [洛谷P5340][TJOI2019]大中锋的游乐场

    题目大意:有$n(n\leqslant10^4)$个点,$m(m\leqslant10^5)$条边的无向图,每个点有一个属性$A/B$,要求$|cnt_A-cnt_B|\leqslant k(k\le ...

  10. [转]HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

    1.错误 HTTP Error 500.21 - Internal Server Error Handler "ExtensionlessUrlHandler-Integrated-4.0& ...