社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

Essex • 6 年前 • 1441 次点击  

我想知道一些有关 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
 
1441 次点击  
文章 [ 1 ]  |  最新文章 6 年前
JPG
Reply   •   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?