Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python Flask中,如何通过当前登录的用户获取角色名?_Python_Flask_Flask Sqlalchemy_Flask Login - Fatal编程技术网

在Python Flask中,如何通过当前登录的用户获取角色名?

在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 =

我在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 = 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