Подтвердить что ты не робот

Обновить элемент <div>, созданный шаблоном django

Как обновить определенный элемент в шаблоне 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 будет кошмаром...

4b9b3361

Ответ 1

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

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

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

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

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

Async View:

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

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