[英]How to determine if a user is a member of an admin group in Flask
我是使用 Flask 的新手,因此對可能是一個基本問題表示歉意。
我正在開發一個新的 Flask 應用程序,該應用程序在數據庫中有多個表。 有一個用於存儲用戶信息(名稱、密碼、啟用)的表。 另一個表保存組名,如果它是管理員組(類型為布爾值)。 第三個表將用戶與他們所屬的組相關聯,因為他們可能是多個組的成員。 這是來自models.py的相關代碼
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(10), index=True, unique=True)
password_hash = db.Column(db.String(128))
active_user = db.Column(db.Boolean)
group_ids = db.relationship('GroupMembers', backref='user', lazy='dynamic' )
def __repr__(self):
return 'User {} | Active {}'.format(self.username, self.active_user)
def set_password(self, password):
self.password_hash = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password_hash, password)
def check_admin(self):
group_ids = self.group_ids.all()
for row in group_ids:
group = Group.query.get(int(row.gid))
if group.admin_rights:
return True
return False
class Group(db.Model):
gid = db.Column(db.Integer, primary_key=True)
groupname = db.Column(db.String(60), index=True, unique=True)
admin_rights = db.Column(db.Boolean)
group_members = db.relationship('GroupMembers', backref='members', lazy='dynamic')
def __repr__(self):
return 'ID: {} | Name: {} | Admin: {}'.format(self.gid, self.groupname, self.admin_rights)
def is_admin_group(self, gid):
_group = self.query.get(int(gid))
return _group.admin_rights
class GroupMembers(db.Model):
__table_args__ = ( db.UniqueConstraint('gid', 'uid'), )
id = db.Column(db.Integer, prmary_key=True)
gid = db.Column(db.Integer, primary_key=True, db.ForeignKey('group.gid'))
uid = db.Column(db.Integer, primary_key=True, db.ForeignKey('user.id'))
def __repr__(self):
return "{}.{}".format(self.gid, self.uid)
我試圖找到確定用戶是否是管理員組成員的最佳方法(group.admin_rights == True)。 “用戶”中的“check_admin”function 有效,但我不確定如何從 html 模板中調用它。 這可以用類似的東西來調用嗎
{% if current_user.check_admin() %}
假設您的 check_admin() 工作正常,您可以像這樣傳遞額外的 check_admin 標志
return render_template('sample_page.html', admin=check_admin())
在 Jinja 模板中,您可以簡單地檢查管理員用戶:
{% if admin %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.