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. 怎么又出错了?盘点java中最容易出现的错误

    现如今,java已经广泛应用各种软件开发领域.基于面向对象的设计,java屏蔽了诸如C,C++等语言的一些复杂性,提供了垃圾回收机制,平台无关的虚拟机技术,Java创造了一种前所未有的开发方式.所以, ...

  2. TCP/IP学习笔记2--协议分层与OSI参考模型

    协议的分层: 为解决不同计算机之间的通信,ISO(International Organization for Standards)指定了一个国际标准OSI(Open Systems Intercon ...

  3. war包方式部署solo博客

    solo,一款小而美的博客系统,GitHub:https://github.com/b3log/solo 环境和文件准备 服务器:用的阿里云服务器,系统是 CentOS 7.3 64 位. JDK:1 ...

  4. 【LEETCODE】51、数组分类,简单级别,题目:581,830,1010,665

    package y2019.Algorithm.array; /** * @ClassName FindUnsortedSubarray * @Description TODO 581. Shorte ...

  5. Verilog的各种坑

    Verilog语言和软件语言不一样,有些时候理所当然的编写,也没有报语法错误,可是功能就是不对.唉,把遇到的坑都记在本篇博客吧. 1. initial begin...end里面不能有always,如 ...

  6. 【C#】上级实验四

    1.虚方法练习 设计一个控制台应用程序,定义一个Shape类,具体要求如下: ()类中定义2个私有字段长度(length).宽度(breadth). ()类中定义相应公有属性分别对应上述2个字段: ( ...

  7. java程序员必须熟悉的一些操作

    1.mysql数据库服务启动命令 /etc/init.d/mysqld start     --启动命令      mysql数据库安装方法参考           http://www.blogja ...

  8. WebApi PUT与DELETE类型访问报错

    * 方法一 在项目的Web.Config文件加入 <modules> <remove name="WebDAVModule" /> </modules ...

  9. mysql数据库备份之主从同步配置

    主从同步意义? 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave).因为复制是异步进行的,所以从服务 ...

  10. FireWolf OS X PE

    FireWolf OS X PE FireWolf OS X PE 9 使用手册   https://pe.firewolf.app/manual/ https://pe.firewolf.app/m ...