1

我需要将实现部分传递到我博客的每个页面。从谷歌,我最终创建了一个这样的 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。这使我不得不在每个视图中重复代码,但我可以使用这里的解决方案来克服它。但是,基于,可能会导致性能问题。

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

4

1 回答 1

2

大多数基于现代类的视图都可以为您完成所有工作,RequestContext因此您无需担心。如果您喜欢基于旧式函数的视图 - 有一个render函数。

那个“性能问题”是关于特定 django.core.context_processors.request的。只要你不使用它——一切都很好。

于 2012-04-30T04:27:16.223 回答