Обновить <div>элемент, сгенерированный шаблоном django - PullRequest
14 голосов
/ 27 августа 2010

Как обновить определенный элемент в шаблоне django?
Пример:

{% if object.some_m2m_field.all %}
    <h3>The stuff I want to refresh is below</h3>
    <div id="the-div-that-should-be-refreshed">
    {% for other_object in object.some_m2m_field.all %}
        <a href="www.example.com">{{ other_object.title }}</a>
        &nbsp;
    {% endfor %}
    </div>
{% endif %}

Допустим, какой-то другой элемент на странице запускает JavaScript, который должен обновлять div выше.Есть ли способ заставить django обновить этот конкретный элемент в шаблоне?

Если нет, мне придётся обезопасить div, используя обычные методы JS или jQuery, и не использовать всю мощь шаблона django.слой.Кроме того, приведенный выше код является упрощением фактического шаблона, я использую большую часть его силы, поэтому создание патча для html для обезьян будет кошмаром ...

Ответы [ 2 ]

29 голосов
/ 27 августа 2010

Вы можете использовать асинхронный запрос для заполнения элемента div.На асинхронный запрос django отвечает с помощью механизма шаблонов.

В этом случае вам придется передать код шаблона элемента div на аутсорсинг в отдельный файл шаблона.

ОБНОВЛЕНО СПРИМЕР:

Javascript:
Для асинхронного обновления представления используйте JQuery, например:

$.ajax({
  url: '{% url myview %}',
  success: function(data) {
  $('#the-div-that-should-be-refreshed').html(data);
  }
});

Асинхронное представление:

def myview(request):
    object = ...
    return render_to_response('my_template.html', { 'object': object })

Шаблон:

{% for other_object in object.some_m2m_field.all %}
    <a href="www.example.com">{{ other_object.title }}</a>
    &nbsp;
{% endfor %}

С уважением!

2 голосов
/ 27 августа 2010

Вы можете взглянуть на например.это Ajax с учебником Django .В любом случае, как уже упоминалось выше, вы всегда можете использовать шаблонизатор django, независимо от того, вызывается ли представление в обычном или ajax-запросе!Если вам нужно чаще использовать ajax с django, имеет смысл взглянуть на что-то вроде dajax , который является библиотекой ajax для django (посмотрите там учебники).

...