在Superset中扩展SimpleFormView创建新视图时遇Access is denied错误
排查思路与解决方案
从你遇到的「权限拒绝+302重定向」现象来看,核心问题大概率出在权限配置或视图继承的细节上,按以下方向逐一排查:
同步视图的权限Mixin:原
CsvToDatabaseView肯定继承了权限相关的Mixin(比如LoginRequiredMixin、PermissionRequiredMixin),你需要确认新视图CvToDatabaseView是否完整复制了这些继承关系和权限配置。示例:# 原视图的权限结构参考 class CsvToDatabaseView(LoginRequiredMixin, PermissionRequiredMixin, SimpleFormView): permission_required = 'your_app.import_csv' # 其他属性... # 新视图必须同步这些配置 class CvToDatabaseView(LoginRequiredMixin, PermissionRequiredMixin, SimpleFormView): permission_required = 'your_app.import_cv' # 或复用原权限码,根据需求调整 # 模板、表单类等其他属性...验证URL路由的权限控制:如果原视图的URL配置额外加了权限装饰器,新视图的URL也需要同步处理。比如用方法装饰器给视图类添加权限校验:
from django.contrib.auth.decorators import permission_required from django.utils.decorators import method_decorator @method_decorator(permission_required('your_app.import_cv'), name='dispatch') class CvToDatabaseView(SimpleFormView): # ...检查表单类的权限逻辑:如果原表单
CsvToDatabaseForm的clean方法或其他逻辑里有用户权限校验,新表单CvToDatabaseForm必须同步这部分代码,否则会触发隐性的权限拒绝。确认用户权限匹配:直接用超级管理员账号测试新视图URL,排除测试用户本身没有对应权限的问题;如果是自定义权限,要确保权限码已正确分配给用户/用户组。
排查重定向逻辑:临时修改新视图的
get_success_url为一个公开页面,验证是否是「成功跳转目标页面无权限」导致的二次重定向。
内容的提问来源于stack exchange,提问作者keith.g
相关产品推荐
相关产品推荐

