在Jquery代码中修改django模板变量

时间:2012-01-24 06:28:05

标签: jquery python django django-templates

我有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'的值

我怎样才能做到这一点?

提前致谢

2 个答案:

答案 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/