我有django模板,我正在检查变量为TRUE或FALSE。现在在Jquery的特定事件中,我想将此django变量值修改为TRUE或FALSE。
在views.py中
var = True
模板中的
{% if var %}
do something
{% endif %}
HTML代码
<form>
<label for="target">Enter Key:</label>
<input id="target" type="text" />
{% if var %}
dispaly other stuff
{% endif %}
</form>
Jquery的
<script>
$('#target').keydown(function(event) {
if ($(this).val() == '00000 )
{
jvar = {{var}}
}
});
我想在特定事件
上更改Jquery中'var'的值我怎样才能做到这一点?
提前致谢
答案 0 :(得分:4)
如果我正确理解你的问题,你就不能。
模板变量在服务器端,jQuery在客户端工作。
因此您无法更改模板,但可以在浏览器中更改生成的HTML。使用类似firefox firebug的东西来检查HTML,你会发现没有django模板的痕迹。
当您的模板html / javascript代码到达浏览器时,jvar = {{var}}
将类似于jvar = 4325
。
只需打开firebug控制台并测试javascript / jQuery表达式。
<script type="text/javascript">
$('document').ready(function(){
$('#some_element_id').click(function(ev) {
jvar = 1;
$('#some_content').show();
$('#some_other_content').hide();
});
$('#some_other_element_id').click(function(ev) {
jvar = 2;
$('#some_content').hide();
$('#some_other_content').show();
});
});
</script>
...
<div id="some_content">
display some stuff
</div>
<div id="some_other_content">
display some other stuff
</div>
答案 1 :(得分:0)
您无法使用jquery修改django模板。在jQuery开始播放时,页面已经呈现为html,并且已经处理了django模板标签。但是你可以使用ajax请求重新渲染模板,或者(我认为在这种情况下就足够了),使用css来显示/隐藏一些块:
<form>
<label for="target">Enter Key:</label>
<input id="target" type="text" />
<div id="hiddencontent" style="display:{% if var %}block{%else%}none{% endif %}
dispaly other stuff
</div>
</form>
Jquery的
<script>
$('#target').keydown(function(event) {
if ($(this).val() == '00000' )
{
$('hiddencontent').show();
}
});
但是,html的内容将以这种方式提供(如果您查看来源)。
如果值'0000'应该是密码,这可能不是最佳解决方案,但如果是,则必须检查服务器端。否则有人可以打开html源并读取密码。我认为最好的选择是阅读Django Forms的工作原理。我在下面提供了一个链接:
http://agiliq.com/blog/2010/01/doing-things-with-django-forms/