Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来)

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

“微”(micro) 并不表示你需要把整个 Web 应用塞进单个 Python 文件(虽然确实可以 ),也不意味着 Flask 在功能上有所欠缺。微框架中的“微”意味着 Flask 旨在保持核心简单而易于扩展。Flask 不会替你做出太多决策——比如使用何种数据库。而那些 Flask 所选择的——比如使用何种模板引擎——则很容易替换。除此之外的一切都由可由你掌握。如此,Flask 可以与您珠联璧合。

默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。Flask 也许是“微小”的,但它已准备好在需求繁杂的生产环境中投入使用

与django的比较

django:无socket,依赖第三方模块wsgi,中间件,路由系统(CBV,FBV),视图函数,ORM。cookie,session,Admin,Form,缓存,信号,序列化
Flask:无socket,中间件(扩展),路由系统,视图(CBV)、第三方模块(依赖jinja2),cookie,session弱爆了

简单使用

安装

pip3 install flask

werkzeug的原理

#Flask依赖一个实现wsgi协议的模块:werkzeug
from werkzeug.wrappers import Request, Response @Request.application
def hello(request):
return Response('Hello World!') if __name__ == '__main__':
from werkzeug.serving import run_simple
run_simple('localhost', 4000, hello)

  

from flask import Flask
app = Flask(__name__) @app.route('/')
def hello_world():
return 'Hello World!' if __name__ == '__main__':
app.run()

练习一下

from flask import Flask,render_template,request,redirect,session
app = Flask(__name__)
app.secret_key = "sdsfdsgdfgdfgfh" def wrapper(func):
def inner(*args,**kwargs):
if not session.get("user_info"):
return redirect("/login")
ret = func(*args,**kwargs)
return ret
return inner @app.route("/login",methods=["GET","POST"])
def login():
if request.method=="GET":
return render_template("login.html")
else:
# print(request.values) #这个里面什么都有,相当于body
username = request.form.get("username")
password = request.form.get("password")
if username=="haiyan" and password=="123":
session["user_info"] = username
# session.pop("user_info") #删除session
return redirect("/index")
else:
# return render_template("login.html",**{"msg":"用户名或密码错误"})
return render_template("login.html",msg="用户名或者密码错误") @app.route("/index",methods=["GET","POST"])
@wrapper
def index():
# if not session.get("user_info"):
# return redirect("/login")
return render_template("index.html") if __name__ == '__main__':
app.run(debug=True)

保存session的数据存到了浏览器上,
  - 优点:减轻了服务端的压力
  - 缺点:不安全

常见错误

1、当你点击提交出现这样的错

解决方案

@app.route("/login",methods=["GET","POST"])

 2、设置session的时候

解决方法:设置秘钥

app.secret_key = "sdsfdsgdfgdfgfh"

附加:

最新文章

  1. TomTom (16Q3)数据协议基础
  2. 项目公共js(vue.js)
  3. 問題排查:F5啟動偵錯後所提示的錯誤 (2)
  4. ORA-00257归档日志写满的解决方法
  5. 如何设置Samza的metrics
  6. 全是干货---Linux 高可用(HA)集群基本概念详解
  7. ECshop 表结构
  8. kivy EventDispatcher
  9. SSL 通信原理及Tomcat SSL 双向配置
  10. 老司机教你在windows不用软件隐藏重要文件
  11. ASI通讯协议——ASI2x1
  12. arcgis api 4.x for js之基础地图篇
  13. 【easy】202. Happy Number
  14. laravel5.5 env
  15. 腾讯云 Game-Tech 技术沙龙小游戏专场“空降”长沙
  16. 对写博客的n种思考
  17. linux下的crontab安装及简单使用
  18. SOAPdenovo组装软件使用记录
  19. Matplotlib 知识点整理
  20. Linux第九周作业

热门文章

  1. <9>cc.Sprite组件
  2. django 网站的搭建(1)
  3. django admim后台不转义提交的html
  4. linux 安装 Python
  5. Quick-Cocos2d-x 新建项目
  6. JavaScript 基础,登录验证
  7. java运行cmd命令
  8. Matlab基础部分1
  9. Autel MaxiSYS PRO MS908P Diagnostic System with Wireless VCI J-2534
  10. Django框架----路由系统、视图和模板(简单介绍)