Py学习  »  Django

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

Essex • 7 年前 • 1944 次点击  

我想知道一些有关 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 它只适用于 获取上下文数据() . 但我如何添加一个“骨架”而不 获取() 方法?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30417
文章 [ 1 ]  |  最新文章 7 年前
JPG
Reply   •   1 楼
JPG    7 年前

我正在尝试从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?