我需要将实现部分传递给我博客的每个页面。从谷歌,我最终创建了像这样的
的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中这个小任务的最佳解决方案是什么?
答案 0 :(得分:2)
大多数现代class based views为您完成所有RequestContext
工作,因此您无需担心。如果你喜欢基于旧式函数的视图 - 那就是render
函数。
“性能问题”与特定django.core.context_processors.request
有关。只要你不使用它 - 一切都很好。