1

ブログのすべてのページに達成セクションを渡す必要があります。Googleから、私はこのような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 に答える