2012-01-24 43 views
0

我有django模板,其中我正在檢查TRUE或FALSE變量。現在在JQuery中的特定事件我想修改這個Django的變量值爲TRUE或FALSE。修改jquery代碼中的django模板變量

在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

任何Jquery的接觸將被渲染。 {%if var%}不應出現在生成的呈現html中。 – monkut

+0

Javascript是客戶端語言。 HTML由python呈現,然後javascript運行 - 它沒有django模板變量的概念。你想要它做什麼? –

回答

4

如果我正確理解你的問題,你不能。

模板變量在服務器端,jQuery在客戶端工作。

因此,您無法更改模板,但可以在瀏覽器中更改生成的HTML。使用類似firefox的螢火蟲來檢查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

+1對新手非常有用 – Philip007

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源文件並讀取密碼NK最好的辦法是在讀了Django是如何工作形式,例如:

http://agiliq.com/blog/2010/01/doing-things-with-django-forms/