Generic Views Migrationでは、どのクラス ベースのビューが何を置き換えるかについて説明します。ドキュメントによると、extra_context を渡す唯一の方法は、TemplateView をサブクラス化し、独自の get_context_data メソッドを提供することです。これは、私が思いついた DirectTemplateView クラスで、extra_context
で行われたのと同じことが可能ですdirect_to_template
。
from django.views.generic import TemplateView
class DirectTemplateView(TemplateView):
extra_context = None
def get_context_data(self, **kwargs):
context = super(self.__class__, self).get_context_data(**kwargs)
if self.extra_context is not None:
for key, value in self.extra_context.items():
if callable(value):
context[key] = value()
else:
context[key] = value
return context
このクラスを使用すると、次のように置き換えられます。
(r'^$', direct_to_template, { 'template': 'index.html', 'extra_context': {
'form': CodeAddForm,
'topStores': get_topStores,
'newsStories': get_dealStories,
'latestCodes': get_latestCode,
'tags':get_topTags,
'bios':get_bios
}}, 'index'),
と:
(r'^$', DirectTemplateView.as_view(template_name='index.html', extra_context={
'form': CodeAddForm,
'topStores': get_topStores,
'newsStories': get_dealStories,
'latestCodes': get_latestCode,
'tags':get_topTags,
'bios':get_bios
}), 'index'),