【发布时间】:2012-09-04 11:34:51
【问题描述】:
所以我有一个自定义模板标签,这很简单。它接受一个视图名称,渲染它,然后返回它的内容。问题是,虽然在它们上使用.as_view() 可以获得内容,但它似乎没有正确设置上下文,因为django-sekizai 的addtoblocks 没有正确添加到主模板。
另一方面,如果我直接实例化视图并在其上调用.render_to_response(context).render(),则上下文将更新,sekizai 会将块数据注入基本模板。但是,第二种方法不会正确呈现表单(.as_view() 会)。有没有办法在不脏地调用两者的情况下做到这一点?
class PopupNode(template.base.Node):
def __init__(self, popup):
self.popup = popup
def render(self, context):
# only needed to update context
view_object = self.popup()
view_object.request = context['request']
view_object.render_to_response(context).render()
# actual content
view_function = self.popup.as_view()
template_response = view_function(context['request'], context=context)
template_response.render()
return template_response.content
【问题讨论】:
标签: django django-templates django-sekizai