Django CreateView获取上下文数据类型

2024-10-01 05:01:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我的应用程序上有一个mixin/视图.py公司名称:

class RefereeViewMixin(object):
    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        if not self.request.user.is_superuser and \
           not self.request.user.has_group("referee"):
            raise PermissionDenied
        return super(RefereeViewMixin, self).dispatch(*args, **kwargs)

以及从我的自定义mixin和CreateView派生的视图:

^{pr2}$

最后,我的最后一个观点来自于juventerresultcreateview:

class RefereeFireFighterResultCreateView(RefereeResultCreateView):
    model = FireFighterResult
    category = "fire_fighter"
    fields = RefereeResultCreateView.fields + [
        "extinguish_success", "extinguish_failure", "wall_hit"]

模式是这样的:

    url(r'^fire_fighter/(?P<pk>\d+)/create/$',
        RefereeFireFighterResultCreateView.as_view(),
        name="referee_fire_fighter_result_create")

但是,当我转到/app/fire_fighter/some_id/create/时,我得到了TypeError。它告诉我super(type,obj):obj必须是类型的实例或子类型。当我调试它时,我发现deferenceResultCreateView的getucontext_data方法导致了这个错误。如果我不重写那个方法,我就看不到任何错误。当我在deferenceFireFighterResultCreateView类重写它时,我没有看到任何错误。在

我能克服这个问题。但是,我认为这不是一种优雅的方式。实际上,它很脏。而且,我很好奇原因。为什么它不能像我期望的那样工作?什么是优雅的解决方案?在

更新

回溯如下:

https://gist.github.com/ilkerkesen/e65fefa66890758bcdcd


Tags: self视图request错误createnotargsmixin