Включить тег 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 и запуска обмена.