tik*_*tuk 1 python flask flask-security flask-admin
我Users和Roles我的瓶的应用程序得益于瓶的安全性.
对于某些角色,我想隐藏Flask-Admin创建的表单中的某些字段.
我知道用例如自定义ModelViews.form_create_rules = ('title', 'file')但是在实例化ModelView时,无法访问当前请求,因此current_user.has_role(USER_ROLE)无法调用.
有没有其他方法来实现这一目标?
实现此目的的一种方法是创建多个视图类,并根据其适当的角色注册这些视图类.请参阅此答案,了解如何将角色注册到视图.使用视图继承,您可以在"基础"类中保留常用功能.
例如,假设我们有一个实现Flask-Security mixin的用户表,我们希望角色"admin"能够读取/设置活动字段,而任何角色为"user"的人都不能看到此字段.该类AdminView在引用的答案中定义.
class AdminUserView(AdminView):
column_list = ['first_name', 'last_name', 'email', 'roles', 'active']
form_columns = ['first_name', 'last_name', 'email', 'active', 'roles']
# Other common functionality here
class UserView(AdminUserView):
# Just redefine the columns that can be seen/edited
column_list = ['first_name', 'last_name', 'email', 'roles']
form_columns = ['first_name', 'last_name', 'email', 'roles']
# register your views and remember to set a unique endpoint as we are using the same model in multiple views
admin.add_view(AdminUserView(model=User, session=db.session, category="Accounts", name="Users", endpoint="users_admin", roles_accepted=["admin"]))
admin.add_view(UserView(model=User, session=db.session, category="Accounts", name="Users", endpoint="users_user", roles_accepted=["user"]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |