关于覆盖通用视图方法的基于类的视图混乱

时间:2014-07-11 19:09:42

标签: django django-class-based-views

我试着让它工作:

url(r'^index$', Index.as_view(), name='index'),
url(r'^index/(?P<pk>[0-9]+)$', Index.as_view(), name='index'),

我有

class Index(MyView):

派生自

class MyViewBase(TemplateView, DetectMobileMixin, TemplateResponseMixin, ContextMixin):

默认情况下它是渲染模板,但我为Index

制作了mixin
class jsonMixin(object):
def get(self, *args, **kwargs):
    if 'pk' in kwargs:
        if self.request.is_ajax():
            pk = kwargs['pk']
            data = self.data_json(pk)
            json_data = json.dumps(data)
            return HttpResponse(json_data,content_type='application/json')
        else:
            self.context["pokaz_element"] = self.id
    return super().get(*args, **kwargs)

class Index(MyViewBase,  jsonMixin):
    ...
    def data_json():
        data = []
        ...
        return data

但它似乎不起作用。 我不知道如何咬它。

我试图了解基于类的视图是如何工作的,从什么以及调用get等函数派生的是什么,但手册并没有解释这一点。

我真的想在一个课程中做到这一点

1 个答案:

答案 0 :(得分:1)

我认为你应该把mixin放在MyViewBase之前,因为Python方法查找。

class Index(jsonMixin, MyViewBase):
    ...
    def data_json():
        data = []
        ...
        return data

希望帮助