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'),
:
本你的DirectTemplateView的語法是什麼? return direct_to_template(request,template ='template.html',extra_context) – mogga
DirectTemplateView.as_view(template_name ='template.html',extra_context = extra_context) – Pykler
我試過這個,但得到這個錯誤:'AttributeError at /管/ data_browse/ 'DirectTemplateView' 對象有沒有屬性 'has_header' 請求方法:\t GET 請求URL:\t的http://本地主機:8000 /管材/ data_browse/ Django的版本:\t 1.5.2 異常類型: \t屬性錯誤 異常值:\t 'DirectTemplateView'對象沒有屬性'has_header' 異常位置:\t /Library/Python/2.7/site-packages/django/utils/cache.py在patch_vary_headers,管線142 Python的可執行文件:\t的/ usr /斌/蟒 Python的版本:\t 2.7.2' – mobopro