繁体   English   中英

Django CBV:get()和get_context_data()

[英]Django CBV : get() and get_context_data()

我想获取有关get()get_context_data()类的一些指标,因为我遇到了问题,并且试图理解原因。

我有一个Django DetailView ,可以显示带有多个查询集的一些统计信息。 在同一个类中,我有一个query string ,其中显示了来自get queryset的结果。

我的代码如下所示:

class StatsView(DetailView):
    """ Create statistics pageview """
    template_name = 'app/stats.html'

    def get(self, request):
        return render(request, self.template_name, context)

    def set_if_not_none(self, mapping, key, value):
        if value is not None:
            if len(value) != 0:
                mapping[key] = value

    def get_context_data(self, **kwargs):
        return context_data

这样, get_context_data()函数不起作用,但是当我在注释中设置get()时,它可以正常工作。 我认为自己有一个小误会。

也许我没有使用好的django通用显示视图,或者不可能在同一类中一起使用get()get_context_data()

谢谢

我阅读了Django文档,但我想向您解释

编辑:

我试图将查询集从get()方法传递给get_context_data() 然后我删除了get()方法,通过TemplateView更改了DetailView ,它仅与get_context_data() 但是,如何在没有get()方法的情况下添加“骨架”呢?

我正在尝试将查询集从get()方法传递给get_context_data()


class StatsView(DetailView):
    """ Create statistics pageview """
    template_name = 'app/stats.html'

    def get(self, request, *args, **kwargs):
        queryset = SampleModel.objects.all()
        return render(request, self.template_name, context=self.get_context_data(queryset=queryset))

    def set_if_not_none(self, mapping, key, value):
        if value is not None:
            if len(value) != 0:
                mapping[key] = value

    def get_context_data(self, **kwargs): qs = kwargs.get('queryset') # do something


如果您重写的get_context_data()方法,建议将super()方法调用为

class StatsView(DetailView):
    # your code

    def get_context_data(self, **kwargs): data = super(StatsView, self).get_context_data(**kwargs) data.update({"foo": "bar"}) return data

我想获得一些有关get()get_context_data()

我认为这已经很好回答了, 何时在Django中使用get,get_queryset,get_context_data?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM