Включить тег Django: Передача имени шаблона в качестве переменной из ответа AJAX

Это код шаблона в Django, где "condition_template.html" должен быть заменен на переменную имени шаблона

{% include "condition_template.html" %}

Я хочу передать условие_имя_шаблона, которое возвращается из ответа AJAX API вызова ниже:

$.ajax({
      url: get_template_data_url,
      type: "GET",
      dataType: 'json',
      success: function (data) {
           var condition_template_name = data['condition_template_name']
      }
    });

Вы не можете сделать это с помощью Django самостоятельно без перезагрузки страницы. Включение шаблонов обрабатывается в бэкенде, когда сервер создает страницу. Ajax выполняется после того, как браузер получил страницу. Чтобы передать ajax-значение в django для использования в include, вам нужно отправить его как часть POST или GET запроса (соответственно, используя javascript для добавления скрытого поля формы или значения querystring в url, например, href="url?name=value"), а затем перезагрузить страницу/вид, чтобы отправить значение в шаблон через контекст.

Есть некоторые сторонние решения, которые могут работать без pageload. HTMX, например, абстрагирует ajax-запрос, который вы можете отправить в представление django, затем получить HTML, который Django генерирует, и поместить его в текущую загруженную страницу. Вы можете использовать ajax для получения соответствующего имени представления, затем javascript для изменения значения hx-get с соответствующим include и запуска обмена.

Вернуться на верх