1,Python现阶段三大主流web框架Django, Tornado, Flask对比

  1. Django主要特点是大而全,集成了很多组件,列如:Models Admin Form等等,不管用得用不着反正它全部都有,属于氢能型框架
  2. Tornado主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架
  3. Flask主要特点小而轻,原生组件几乎为0,三方提供的组件请参考Django非常全面,属于短小精悍型框架,
  4. Django通常用于大型web应用由于内置组件足够强大所以使用Django开发了可以一气呵成,
  5. Tornado通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞,非常适合,
  6. Flask通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的文本应用
  7. Django优点是大而全,缺点是资源加载的太多,会造成一定的资源浪费
  8. Tornado优点是异步,缺点是干净,session都不支持
  9. Flask优点是简单精悍,缺点是不够稳定

2,Flask的安装

pip install Flask

千万不要用pycharm创建Flask项目,它会自动给设置环境变量

创建py文件导入Flask即可

from flask import Flask, request, render_template, jsonify,send_file, session, Markup, redirect
import json app = Flask(__name__) app.secret_key = "xuexue" # app.config["SERVER_NAME"] = "oldboy.com" STUDENT = {'name': 'Old', 'age': 38, 'gender': '中'} STUDENT_LIST = [
{'name': 'Old', 'age': 38, 'gender': '中'},
{'name': 'Boy', 'age': 73, 'gender': '男'},
{'name': 'EDU', 'age': 84, 'gender': '女'}
] STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'}
} #########################################特殊装饰器############################################ @app.template_global()
def ab(a, b):
return a+b @app.template_filter()
def axb(a,b):
return a*b ##################################flask的三剑客以及请求的相关的数据##############################
# redirect
# render_template
# "我的头可不是面团捏的" HttpResponse
@app.route("/")
def index():
return "我的头可不是面团捏的" @app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "GET":
print(request.method)
# GET
print(request.form)
# ImmutableMultiDict([])
print(request.args.to_dict())
# 存放在url上的参数{'page': '2'}
print(request.host)
# 127.0.0.1:8080,主机和端口
print(request.host_url)
# http://127.0.0.1:8080/ 主机+端口+http
print(request.path)
# /login url除了主机和端口
return render_template("login.html")
if request.method == "POST":
print(request.form)
# ImmutableMultiDict([('user', 'xuexue'), ('pwd', 'xuexue23235')])
print(request.form.to_dict())
# {'user': 'xuexue', 'pwd': 'xuexue23235'}
print(request.json)
# Nonejson放json数据格式
print(request.data)
# b''放二进制的数据的
user_info = request.form.to_dict()
if user_info.get("user") == "xuexue" and user_info.get("pwd") == "xuexue123": return "登录成功"
return "用户名或密码错误" @app.route("/register", methods=["GET", "POST"])
def register():
if request.method == "GET": return render_template("register.html")
else:
# 获取提交的注册的数据
user = request.form.to_dict().get("user")
pwd = request.form.to_dict().get("pwd")
# 写入到数据库中
# orm 操作
# return json.dumps({"name": "xuexue", "pwd": "miss"})
# {"name": "xuexue", "pwd": "miss"}
return jsonify({"name": "xuexue", "pwd": "miss"})
# {
# "name": "xuexue",
# "pwd": "miss"
# }
##############################################模板语言###########################
@app.route("/model", methods=["GET", "POST"])
def model():
if request.method == "GET":
return render_template("file.html")
# return send_file("1.png")
else:
file = request.files.get("filename")
file.save(file.filename)
return send_file("xuexue.png") @app.route("/sess")
def sess():
inp = Markup("<input type='text'>")
session["user"] = "xuexue"
if session.get("user"):
print(session)
# <SecureCookieSession {'user': 'xuexue'}>
# return render_template("xuexue.html", inp=inp, stu=STUDENT)
# return render_template("xuexue.html", inp=inp, stu=STUDENT_LIST)
return render_template("index.html", inp=inp, stu=STUDENT_DICT)
return redirect("/login") # @app.route("/sesss", redirect_to="/sess")
# # def miss():
# # return "太多的理由,太多的借口" @app.route("/info", subdomain="xuexue")
def miss():
return "太多的理由,太多的借口" app.run(host="0.0.0.0", port=8080, debug=True)
  1. 启动:

    • from falsk import Flask
    • app = Flask(__name__)
    • app.run("0.0.0.0", 5000, debug=True)
  2. 加入路由
    • @app.route("/",methods=["GET", "POST]")

      • def home():

        • return "xuexue"
  3. Response三剑客 + 小儿子
    • HTTPResponse return "xueren"
    • from flask import redirect
    • redirect: return redirect("/")
    • from flask import render_template
    • render: return render_template - templates
    • 小儿子
    • from flask import send_file,jsonify
    • renturn send_file()   # 打开并返回文件内容
    • return jsonify() Content-Type: application/json
  4. request
    • from flask import request
    • request.form 表单数据,FormData字典数据to_dict()
    • request.args URL中的参数,数据
    • request.json Content-Type:applications/json请求头
    • request.data Content-Type不被认可, 将原始数据存放在data中是bytes类型
    • request.values存放FromDate URL 一般情况下不要用,有坑,如果url和form表单中name命名一样,url中的数据就会覆盖form表单的数据
    • request.files获取文件save保存
    • request.method 请求的方法
    • request.path请求的路径
  5. jinjia2:{{  }}引用和执行
  6. {%%}逻辑代码
  7. session:Falsk-session
    • 将session加密后存放在浏览器的Cookie
    • from flask import session
    • app.secret_key = "雪雪"
    • session["user"] = "雪人"
    • session.get("user")
  • 写装饰器 基于session验证用户有效性

初识 flask的更多相关文章

  1. Flask(1)- 主流web框架、初识flask

    一.Python 现阶段三大主流Web框架 Django.Tornado.Flask 对比 Django 主要特点是大而全,集成了很多组件(例如Models.Admin.Form等等), 不管你用得到 ...

  2. flask框架(一)——初识Flask

    一.初识flask 1.什么是Flask:Flask是一个python编写的web框架,只是一个内核,默认依赖2个外部库:jinja2模板引擎和WSGI工具集--Werkzeug. 2.安装flask ...

  3. 初识Flask、快速启动

    目录 一.初识Flask 1.1 什么是flask? 1.2 为什么要有flask? 二.Flask快速启动 一.初识Flask 1.1 什么是flask? Flask 本是作者 Armin Rona ...

  4. 初识Flask

    首先在学习flask的前提,我是使用了很久的django和tornado,现在在写总结也是本着工作后方便使用flask 少点东西,对flask的介绍和优点总结 1.安装 pip install fla ...

  5. Flask01 初识flask、flask配置

    1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...

  6. 一个web应用的诞生(1)--初识flask

    基于flask的web应用的诞生 Flask是一个非常优秀的web框架,它最大的特点就是保持一个简单而易于扩展的小核心,其他的都有用户自己掌握,并且方便替换,甚至,你可以在社区看到众多开源的,可直接用 ...

  7. 初识Flask框架,以及Flask中的模板语言jinjia2和Flask内置的Session

    一.web框架的对比 首先我们先来看下比较火的web框架 1.Django: 优点:大而全,所有组件都是组织内部开发高度定制化,教科书级别的框架 缺点:大到浪费资源,请求的时候需要的资源较高 2.Fl ...

  8. Flask01 初识flask、创建flask应用、flask启动配置

    1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...

  9. 初识Flask框架

    Flask简介: Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其 ...

随机推荐

  1. 【Linux】Centos6的iptables防火墙设置

    1,查看防火墙状态 # service iptables status //或 # /etc/init.d/iptables status 2,防火墙的启动.重启,关闭 # service iptab ...

  2. zzuli 1905 小火山的跳子游戏

    Description   小火山和火山火山在一块玩跳子游戏.规则如下:   1:跳子的起始位置为0,棋盘大小从1到N   2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k   3:跳 ...

  3. 数据结构实验1:C++实现静态顺序表类

    写了3个多小时,还是太慢了.太菜了! 图1 程序运行演示截图1 实验1 1.1 实验目的 熟练掌握线性表的顺序存储结构. 熟练掌握顺序表的有关算法设计. 根据具体问题的需要,设计出合理的表示数据的顺序 ...

  4. 用spring annotation声明的bean,当打包在jar中时,无法被扫描到

    发现一个问题,十分蛋疼. 我们项目是由N个工程组成的,外围工程是web工程,内部的工程打包成jar,放入外围工程的WEB-INF/lib 内部的工程用到了spring的注解,例如@Service.@C ...

  5. 【转】玩玩负载均衡---在window与linux下配置nginx

    最近有些时间,开始接触负载均衡方面的东西,从硬件F5再到Citrix Netscalar.不过因为硬件的配置虽然不复杂,但昂贵的价格也让一般用户望而却步(十几万到几十万),所以只能转向nginx,sq ...

  6. 大数据学习——HDFS的shell

    -help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop-server01:9000/ 备注:这些参数中,所有的hdfs路径都 ...

  7. 在JavaScript中获取Map集合中的key和value值(前提是:既不知道key为什么值,也不知道value有哪些值)

  8. ASP.NET MVC WebAPI请求

    基础: 首先,先创建一个“ASP.NET 空Web应用程序” : 然后添加对 “System.Web.Http” 和 “System.Web.Http.WebHost” 的引用: 再添加对“Syste ...

  9. 七牛云一站式 SSL 证书服务上线,即刻使用最多可省 7 万

    2017 年 ,随着谷歌.苹果和腾讯对原 HTTP 的相继限制,全站 HTTPS 已经成为了当下趋势,所以安装 SSL 证书成为网站建设中必不可少的一步. 在 2016 年底,七牛云已经与 Trust ...

  10. CDQ分治模板

    #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #defi ...