Django框架中views视图中如果多个函数都有同样的查询语句,例如:
allcategory = Category.objects.all() remen = Article.objects.filter(tui__id=2)[:6] tags = Tag.objects.all()
如果不优化,会导致每执行一次函数,都会重新查询一遍数据库,现进行简要优化:步骤如下
第一步,将以上三行语句拷贝出来,重构成一个独立的函数如下:
def global_variable(request): allcategory = Category.objects.all() remen = Article.objects.filter(tui__id=2)[:6] tags = Tag.objects.all() return locals()
第二步:在项目主文件settings.py文件中更新模板配置
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'blog.views.global_variable', ], }, }, ]
第三步:将views.py文件所有带上述三个查询的函数中此三行删除。
over,大功告成!
如此只需要查询一次数据库,便可以给众多的函数使用。
转自:https://www.django.cn/course/show-51.html 【单页面实现与代码优化】