3

我将 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()

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

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

4

1 回答 1

10

看起来你刚刚创建了局部变量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'
于 2013-06-17T10:13:44.527 回答