python - django的通用视图会降低性能吗?

查看:124
本文介绍了python - django的通用视图会降低性能吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

一般django的通用视图,就是把一些比较常见的变量的写在一个类里面
然后class IndexView(BaseMixin, ListView): 这样类继承的方式来调用

那么

class BaseMixin(object):
    def get_context_data(self, *args, **kwargs):
        context = super(BaseMixin, self).get_context_data(**kwargs)
        # 热门文章
        context['hot_article_list'] = \
            Article.objects.order_by("-view_times")[0:10]

        # 随机文章10篇
        context['romdon_article_list'] = \
            Article.objects.order_by("?")[0:6]

        # 随机文章倒6篇
        context['dromdon_article_list'] = \
            Article.objects.order_by("?")[:10].reverse()[:6]

        #站长推荐
        context['rank_article_list'] = \
            Article.objects.order_by("-rank")[:6]
        return context

每次在打开一个视图的时候 就会加载这个 我想问下,加载的时候不知道会不会执行查询语句?
如果会的话那真的就是太蛋疼了!
因为我打算把更多的变量都添加到通用视图里面去

解决方案

全局模板变量这样写吧, 这样不用你的每个view都去继承
settings配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'website.context_processors.varibble'
            ],
        },
    },
]

然后定义一个context_processors.py文件

def varibble(request):
    content = {
        'hot_article_list': Article.objects.order_by("-view_times")[0:10],
        'romdon_article_list': Article.objects.order_by("?")[0:6]
    }
    return content

这篇关于python - django的通用视图会降低性能吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆