我们可以将页面名称传递给django
中的extends标记即,我想做类似
的事情修改
if(login):
return render_to_response('/p_change/',
context_instance = RequestContext的(请求,{ '页': 'newpage.html'}))
else:
return render_to_response('/p_h/',
context_instance = RequestContext的(请求,{ '页': 'newpage1.html'}))
{% extends page %}
答案 0 :(得分:4)
可以将变量传递给extends
。来自django book:
在大多数情况下,{%的论点 extends%}将是一个字符串,但它 如果不这样做,也可以是一个变量 知道父模板的名称 直到运行时这可以让你做一些 很酷,很有活力的东西。
但请注意,有一点需要注意!
如果您在a中使用{%extends%} 模板,它必须是第一个 该模板中的模板标记。 否则,模板继承不会 工作
这意味着您必须将页面选择逻辑放在您的视图中(而不是在模板中,因为它将出现在extend
标记之前,从而使模板继承无效)并在您的上下文中传入变量。有关详细信息,请参阅this answer。
在您更新的问题中,您的代码几乎就在那里,除了render_to_response的第一个参数应该是模板文件名,而不是目录。
我会改写你所拥有的:
if login:
sub_page = '/p_change/newpage.html'
else:
sub_page = '/p_h/newpage1.html'
# 'base.html' being the base template containing {% extends page %}
return render_to_response('base.html', context_instance=RequestContext(request, {
'page' : sub_page,
}))
当然,我只是在猜测你想要达到的目标,可能会被误解。
答案 1 :(得分:0)
您可以将变量传递给extends
,如果这就是您所要求的。
{% extends page %}