【问题标题】:Flask-Admin can_create = True only for a given userFlask-Admin can_create = True 仅适用于给定用户
【发布时间】:2013-06-16 20:53:47
【问题描述】:

我将 Flask-Admin 与 Flask-Login 和 mongoengine 结合使用。

我希望根据用户自定义视图。下面是一个带有can_create 的示例,它允许创建模型。


class MyModelView(ModelView):
    column_exclude_list = ['password']
    def is_accessible(self):
        if (login.current_user.login != 'admin'):
            can_create=False
        return login.current_user.is_authenticated()

这样一段代码没有任何作用:所有用户仍然可以创建,管理员和非管理员用户没有区别。

非常感谢您提供有关如何仅允许给定用户创建模型的任何提示。

【问题讨论】:

    标签: flask flask-login flask-admin


    【解决方案1】:

    看起来你刚刚创建了局部变量can_create,所以你可以试试self.can_create = False。但是flask-admin 创建View 的一个实例,这可能是并发问题。然而,用于检查可访问性和更改视图状态的更好的单独逻辑。所以可能更好地使用下一个代码:

    class MyModelView(ModelView):
        column_exclude_list = ['password']
    
        def is_accessible(self):
            return login.current_user.is_authenticated()
    
        @property
        def can_create(self):
            return login.current_user.login == 'admin'
    

    【讨论】:

    • 令人惊讶的是,我经常忘记将某些东西作为属性获取器可以解决我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2019-05-31
    • 2019-10-26
    • 1970-01-01
    • 2022-01-05
    • 2018-01-21
    相关资源
    最近更新 更多