所以我有一个自定义模板标签,这很简单。它接受一个视图名称,渲染它,然后返回它的内容。问题是,虽然.as_view()
在它们上使用可以获得内容,但它似乎没有正确设置上下文,因为django-sekizai
'saddtoblock
没有正确添加到主模板。另一方面,如果我直接实例化视图并调用.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