代码之家  ›  专栏  ›  技术社区  ›  Essex

django cbv:get()和get_-context_-data()。

  •  0
  • Essex  · 技术社区  · 6 年前

    我想知道一些有关 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
    

    这样地, 获取上下文数据() 功能不起作用,但当我设置 获取() 在评论中,它工作得很好。我想我有一个小小的误会。

    也许我没有使用好的Django通用显示视图,或者它不可能使用 获取() 获取上下文数据() 一起上同一个班?

    谢谢你

    我读了Django的文件,但我想从你那里得到解释

    编辑:

    我正试图从 获取() 方法到 获取上下文数据() . 然后我删除 获取() 方法,我改变了 DetailView 通过 TemplateView 它只适用于 获取上下文数据() . 但我如何添加一个“骨架”而不 获取() 方法?

    1 回复  |  直到 6 年前
        1
  •  1
  •   JPG    6 年前

    我正在尝试从get()方法传递查询集以获取上下文数据()。


    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() 方法AS

    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() 获取上下文数据()

    我觉得已经很好地回答了, When to use get, get_queryset, get_context_data in Django?