在Django视图中: -
if request.is_ajax():
t = get_template('bar-templates.html')
html = t.render(Context({'edit': True, 'user':'some-user' }))
return HttpResponse(html)
有两个模板:
主模板(foo-templates.html)
,其中包含模板(bar-templates.html)
。在上下文edit
和user
传递给bar-templates.html
但此变量也用于foo-templates.html
。在django,我们习惯{{ edit }}
来捕捉变量。由于此变量出现在bar-templates.html
中。我如何将其用于foo-templates.html
。
FOO-templates.html:
{% extends "base.html" %}
<div class="container">
{{ edit }} // Here I am not getting the edit value
{% if edit %} // I need this edit value. But this value is in context with `bar-templates.html`
do something
{% else %}
do something
{% endif %}
<div class="content">
{% include "bar-templates.html" %}
</div>
杆templaes.html
{{edit}} //这里它给了我编辑值 这是我从视图发送的模板。
如何将included template
变量值用于包含它的模板。
答案 0 :(得分:1)
使用您应编辑的其他帖子中的详细信息以包含在此帖子中:
据我所知,您正在尝试在侧边栏菜单中添加“选定”类。这对您不起作用,因为正如gcbirzan所说,您无法将ajax响应的上下文放入基本模板中。最重要的是,你不会重新渲染基本模板,因此它不会改变。
使用javascript,您可以从part.html
中提取foo_id。由于该代码未显示,假设您将foo_id保存在隐藏的div中,<div id="foo_id" style="display:none;">foo_2</div>
现在您可以将ajax函数更改为以下内容:
$.ajax({
type:'GET',
cache: 'false',
url:"/foobar/",
success:function(data) {
$('#main-content').html(data);
var $foo_id = $('#foo_id').val();
$('#foo1>ul>li.selected').removeClass('selected');
$('#'+ foo_id).addClass('selected');
}
});
答案 1 :(得分:0)
如果您只是渲染foo:
t = get_template('foo-templates.html')
html = t.render(Context({'edit': True, 'user':'some-user' }))
然后'foo'和包含的'bar'都具有相同的'edit'值。
我不完全理解你的问题,但我已经回答了吗?