Django - 每个模板中的常见数据

时间:2012-04-30 03:44:24

标签: python django

我需要将实现部分传递给我博客的每个页面。从谷歌,我最终创建了像这样的

的context_processor
# processor.py 

from myblog.models import Post

def get_date(request):
  return {'dates' : Post.objects.order_by('created')}

这是base.html

<ul>
    {% for d in dates %}
        <li><a href="#">{{ d.created|date:"M-Y"}}</a></li>
    {% endfor %}
</ul>

这是TEMPLATE_CONTEXT_PROCESSORS

TEMPLATE_CONTEXT_PROCESSORS = (
  "django.contrib.auth.context_processors.auth",
  "django.core.context_processors.debug",
  "django.core.context_processors.i18n",
  "django.core.context_processors.media",
  "django.core.context_processors.static",
  "django.core.context_processors.tz",
  "django.contrib.messages.context_processors.messages",
  'myblog.processor.get_date',
)

最后,为了让日期显示在页面上,我需要在每个视图中传递RequestContext。这使得我必须在每个视图中重复代码,但我可以使用here中的解决方案来克服它。但是,根据this,可能会导致性能问题。

最后,Django中这个小任务的最佳解决方案是什么?

1 个答案:

答案 0 :(得分:2)

大多数现代class based views为您完成所有RequestContext工作,因此您无需担心。如果你喜欢基于旧式函数的视图 - 那就是render函数。

“性能问题”与特定django.core.context_processors.request有关。只要你不使用它 - 一切都很好。