Изменить переменную шаблона django в коде Jquery - PullRequest
0 голосов
/ 24 января 2012

У меня есть шаблон django, где я проверяю переменную на ИСТИНА или ЛОЖЬ. Теперь для конкретного события в 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}}
       }
     });

Я хочу изменить значение 'var' в Jquery для конкретного события

Как мне этого добиться?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 24 января 2012

Если я правильно понимаю ваш вопрос, вы не сможете.

Переменные шаблона находятся на стороне сервера, 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>
0 голосов
/ 24 января 2012

Вы не можете изменять шаблоны django, используя jquery.В момент, когда 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.Я предоставил ссылку ниже:

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

...