在Python Flask中,如何通过当前登录的用户获取角色名?
我在Flask中有3个用于用户角色多对多关系的表。如何从当前用户处获取角色名称 在my models.py中在Python Flask中,如何通过当前登录的用户获取角色名?,python,flask,flask-sqlalchemy,flask-login,Python,Flask,Flask Sqlalchemy,Flask Login,我在Flask中有3个用于用户角色多对多关系的表。如何从当前用户处获取角色名称 在my models.py中 class User(db.Model, UserMixin): __tablename__ = "Users" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(100), nullable=False, unique=True) password =
class User(db.Model, UserMixin):
__tablename__ = "Users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, server_default='')
# Define the relationship to Role via UserRoles
roles = db.relationship('Role', secondary='UserRoles', backref=db.backref("user", lazy="dynamic"))
# Define the Role data-model
class Role(db.Model):
__tablename__ = 'Roles'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(50), unique=True)
users = db.relationship('User', secondary='UserRoles', backref=db.backref("role", lazy="dynamic"))
# # Define the UserRoles association table
class UserRole(db.Model):
__tablename__ = 'UserRoles'
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), db.ForeignKey('Users.id', ondelete='CASCADE'))
role_id = db.Column(db.Integer(), db.ForeignKey('Roles.id', ondelete='CASCADE'))
在my views.py中:
from flask_user import current_user
@app.route("/TestUserRole")
def user_role():
role = current_user.role
return str(role)
在浏览器上,它向我显示返回的结果:
SELECT [Roles].id AS [Roles_id], [Roles].name AS [Roles_name] FROM [Roles], [UserRoles] WHERE [UserRoles].user_id = ? AND [Roles].id = [UserRoles].role_id
是否有一种可能的方式来显示当前用户的角色名,类似于下面这样的方式(尽管是一个坏例子,因为它会弹出错误)
当前\u用户。具有\u角色
功能将有所帮助
这很简单:
假设您配置了以下角色,如
角色1:管理员
角色2:经理
如果用户没有关联的角色,当前用户.has\u roles()
将为False
如果登录用户的角色为“Admin”,则可以使用current\u user.has\u roles('Admin')
进行验证
因此,可以通过
has\u roles()
访问用户角色尝试用户角色=[role.name for role in current\u user.roles]
您不能执行类似于role.query.get(**current users role id**)
的操作并将其添加为一个额外列吗?我也是新来的:)
role = current_user.role.name