非超级用户如何使用Django Viewflow(非专业版)?或禁用其权限检查?
Django Viewflow非专业版开放普通用户访问或禁用权限检查方案
一、开放权限给普通用户(推荐生产环境使用)
- 找到Viewflow流程对应的模型权限:每个自定义Flow会自动生成对应模型的
view_<flow_model>权限(比如你定义的MyFlow,权限名为myapp.view_myflow)。 - 在Django管理后台,给目标普通用户/用户组分配该流程的view权限:进入用户/用户组编辑页面,在"权限"列表中找到对应流程的view权限并勾选保存。
- 若需自定义权限名称,可在Flow类的Meta中指定:
from viewflow import Flow class MyFlow(Flow): class Meta: view_permission_name = 'myapp.custom_view_myflow'
之后确保该自定义权限被分配给普通用户。
二、禁用权限检查(仅测试环境使用,生产环境不推荐)
方法1:自定义视图Mixin跳过权限检查
创建一个跳过权限验证的Mixin,替换Flow默认的权限校验逻辑:
from viewflow.flow.views.mixins import FlowViewMixin class NoPermissionCheckMixin(FlowViewMixin): def dispatch(self, request, *args, **kwargs): # 跳过权限检查,直接执行后续视图逻辑 return super().dispatch(request, *args, **kwargs)
在配置Flow的视图时,将该Mixin加入视图类的继承列表中。
方法2:指定全局通用权限
将Flow的view权限指定为所有登录用户默认拥有的权限(如django.view_site),从而绕过专属权限检查:
class MyFlow(Flow): class Meta: view_permission_name = 'django.view_site'
报错原因说明
你遇到的报错是因为Viewflow默认会校验用户是否持有对应流程的view权限,非超级用户未被分配该权限,触发了permission_required的异常。
内容的提问来源于stack exchange,提问作者Arash zargari marandi
相关产品推荐
相关产品推荐

