Flask

2019-12-17  本文已影响0人  秋殇灬

Flask的优缺点

优点:Flask小而精,三方组件全

缺点:稳定性相对较差,三方组件版本问题,Flask一旦迭代,就可能造成三方组件不兼容的问题。

flask三剑客 + 小儿子

Django flask

HTTPResponse : return "Hello World"

render : render_template

redirect : redirect

send_file("static/123.jpg") # 上传文件

jsonify("{id: 1}") # Content-Type: application/json

request

request.form    Form表单提交的数据,POSTrequest.args     url中的参数request.data     Content-Type无法解析的数据,原始数据是字节流(b"")request.json     Content-Type:application/json request.method   获取请求方式request.path       路由地址/loginrequest.files        获取文件对象  

session - Flask-Session

from flask import session app.secret_key = '123'  # 如果遇到了 Must provide secret_key to use csrf错误提醒,原因就是没有设置secret_key ,在代码中加上 session["user"] = "wjs"session存放在浏览器的cookie中默认名称是session   序列化的数据session.get("user")  Flask-Session  一个三方组件from flask_session import Sessionfrom flask import session app.config["SESSION_TYPE"] = "redis"app.config["SESSION_REDIS"] = Redis实例Session(app) session["user"]  = "wjs"session存放在浏览器的cookie中默认名称是session -- UUIDsession.get("user")

Flask实例化配置,对象配置:

实例化:    Flask(__name__,        template_folder="模板路径",        static_folder="静态文件路径",        static_url_path="/静态文件访问路径")    对象配置:        app.debug = True        app.config["DEBUG"] = True        class FlaskSetting(object):            DEBUG = True        app.config.from_object(FlaskSetting)  

蓝图 Blueprint

from flask import Blueprintblue = Blueprint("blue",__name__,template_folder="模板路径",        static_folder="静态文件路径",        static_url_path="/静态文件访问路径",url_prefix="/blue") @blue.route("/blue01")def blue01():    return "123" 记得在app中注册蓝图app:    app.register_blueprint(blue)  

特殊装饰器:

@app.template_global()   # 全局函数def ab(a,b):    return a + b{{ab(1,2)}}  # 调用ab函数  @app.template_filter()  # 偏函数def abc(a, b, c):    return a + b + c{{2|abc(2,2)}}  # 调用abc函数  @app.before_request  # 请求进入视图函数之前def  be1():    return None   # 跳过 @app.after_request   # 视图函数结束之后,返回客户端之前def af1(response):    return response 正常: 请求-be1-be2-be3-af3-af2-af1-客户端    # be是按照代码执行顺序走,af是按照代码执行顺序的反序走 异常: 请求-be1-be2-af3-af2-af1-客户端    # 断掉以后be断掉后面的就不走了,af还是都走 @app.errorhandler(404)  # 重定义错误信息def error404(args):   # args存放的是错误信息    return render_template("error.html", args=args)

Flask CBV

from flask import views class Login(views.MethodView):    # methods = ["POST"]    def get(self):        pass    def post(self):        pass  app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"),methods=["POST"])

WTForms

simple,core

flash

from flask import flash,get_flashed_messages    flash("66","tag")   get_flashed_messages(category_filter=["tag"])
上一篇下一篇

猜你喜欢

热点阅读