第十一篇 CBV和闪现

前几篇写的都是FBV

现在可以了解一下CBV

CBV

其实就是把请求方式都写到一个类中

学过django的一眼应该就明白了

from flask import Flask, render_template
from flask import views  # 导入视图模块用于CBV

app = Flask(__name__, static_folder="static")



# FBV
@app.route('/')
def index():
    flash('gang_dan', 'name')
    flash(18, "age")

    return "this's index"


# CBV
class LoginClass(views.MethodView):

    def get(self):
        return render_template("login.html")

    def post(self):
        return "ok"

# 利用源码self.add_url_rule(rule, endpoint, f, **options)可得以下写法
app.add_url_rule("/login", view_func=LoginClass.as_view("login"))

app.run(debug=True, host="127.0.0.1", port="9000")

闪现 flush

from flask import Flask, render_template
from flask import flash, get_flashed_messages  # flash设置 和取flash值
from flask import views  # 导入视图模块

app = Flask(__name__, static_folder="static")
app.secret_key = 'guan_ta_shi_sha_key'  # 使用flash需要设置session  不然报错。。。


# FBV
@app.route('/')
def index():
    flash('gang_dan', 'name')
    flash(18, "age")

    return "this's index"


# CBV
class LoginClass(views.MethodView):

    def get(self):
        print(get_flashed_messages("name"))  # 取出所有键值对
        # [('name', 'gang_dan'), ('age', 18)]
        print(get_flashed_messages("age"))  # 取出所有键值对
        # [('name', 'gang_dan'), ('age', 18)]
        print(get_flashed_messages())  # 取出所有的key
        # ['gang_dan', 18]
        return render_template("login.html")

    def post(self):
        return "ok"


app.add_url_rule("/login", view_func=LoginClass.as_view("login"))

app.run(debug=True, host="127.0.0.1", port="9000")

先访问一次路由 ‘/’  写入flash,等着再访问 "/login"  获取值后 falsh就没了

再访问下 "/login" 后  发现打印的全是空列表

posted @ 2018-12-18 19:07  洛丶丶丶  阅读(161)  评论(0编辑  收藏  举报