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. Jenkins - 以Docker方式安装启动Jenkins

    1 - 官网信息 操作步骤:https://jenkins.io/zh/doc/book/installing/#docker Docker映像地址:https://hub.docker.com/r/ ...

  2. 算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组

    1.x的平方根 java (1)直接使用函数 class Solution { public int mySqrt(int x) { int rs = 0; rs = (int)Math.sqrt(x ...

  3. spring boot @RequestBody数据传递及解析

    @RequestBody需要接的参数是一个string化的json @RequestBody,要读取的数据在请求体里,所以要发post请求,还要将Content-Type设置为application/ ...

  4. (生鲜项目)01. Vue环境搭建

    第一步: nodejs安装 https://nodejs.org/en/download/ 说明安装成功 第二步: cnpm 由于npm需要很多的依赖包,这些包下载都很慢,所以就有了cnpm : ht ...

  5. C/C++ 面试-内存对齐 即不同数据类型存储空间

    下面列举了Dev-C++下基本类型所占位数和取值范围: 基本型                          所占位数              取值范围                输入符举例 ...

  6. AppCrawler运用总结

    一.环境 1.环境准备:安装安卓SDK + 真机 + appcrawler-2.1.3.jar 在放 appcrawler-2.1.0.jar 的文件夹下执行以下命令: 1.生成yml的demo:ja ...

  7. 怎么又出错了?盘点java中最容易出现的错误

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

  8. python断点

    pycharm怎么debug单步调试 1.打开一个Pycharm的界面,需要选中编辑器中的左侧. 2.点击Run---->Debug运行 3.点击箭头,向下运行 4.可以看到代码运行到下一条 5 ...

  9. PHP 死锁问题分析

    背景:对于死锁的问题,人们往往想到出现一些关于访问很缓慢,有白页现象,要是测试环境(我就真实遇到测试环境有本文谈及一样的问题)你也就重启一下PHP的php-fpm进程发现又好了,隔一段时间又出类似的问 ...

  10. js 获取服务端时间,并实现时钟

    本例子以vue语法伪代码书写: 1,获取服务端北京时间 getRealTime() { let that = this; var xhr = new XMLHttpRequest(); if( !xh ...