传递extra_context的唯一方法是子类TemplateView并提供自己的get_context_data方法。这是我想出的
DirectTemplateView类,它允许
extra_context这样做
direct_to_template。
from django.views.generic import TemplateViewclass 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'),


