我正在尝试使用闪存系统在管理员视图中向用户显示一条消息,如果他没有一定的权利。
以下几乎可以正常工作,但该消息仅在用户下次更改页面时显示。
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask import flash, Flask
from flask_admin.babel import gettext
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
class UserView(ModelView):
def check_can_create(self):
can_create = False
if can_create:
print("wat")
return True
else:
print("flash")
flash(gettext("You can't create other user"), 'error')
return False
can_create = property(check_can_create)
admin = Admin()
admin.add_view(UserView(User, db.session))
app = Flask(__name__)
app.secret_key = b'ninja'
db.init_app(app)
db.app = app
db.create_all()
admin.init_app(app)
app.run() # Goto 127.0.0.1:5000/admin
我认为,烧瓶首先获取所有flash消息,然后检查model_view的can_create / delete标志。 有人有解决方案吗?
答案 0 :(得分:1)
使用模型视图的渲染方法来绕过我的问题:
class UserView(ModelView):
def render(self):
if not self.can_create:
flash(gettext("You can't create other user"), 'error')
return super(UserView, self).render()