Как проверить запрос HTMX Get?

Я работаю с Django и HTMX. Одно из моих представлений получает GET-запрос и возвращает целую страницу. Однако, если этот GET запрос получен от элемента HTMX, представление вернет фрагмент:

from django.shortcuts import render

def view_example(request):
    if request.htmx:
        return render(request, 'fragment.html')
    else:
        return render(request, 'page.html')

В page.html элемент HTMX вызывает запрос GET, который ожидает этот фрагмент. Это работает - мои функциональные тесты видят результат запроса HTMX. Когда я просматриваю его в браузере, он также работает. Однако он не работает в моих модульных тестах!

Я пытаюсь проверить два различных типа ответов:

from django.test import TestCase

class TestRequests(TestCase):
    def test_page(self):
        response = self.client.get('/')
        self.assertTemplateUsed(response, 'page.html')

    def test_fragment(self):
        headers = {'Hx-Request': 'true'}
        response = self.client.get('/', **headers)
        self.assertTemplateUsed(response, 'fragment.html')

test_page проходит, как и ожидалось, но test_fragment не проходит:

AssertionError: False is not true : Шаблон 'fragment.html' не был шаблоном, использованным для рендеринга ответа. Фактически использовался шаблон(ы): page.html

.

Как мне смоделировать запрос HTMX, чтобы я мог проверить логику моего фрагмента?

Проверка заголовков в

Django-HTMX чувствительна к регистру (это поиск по ключу dict). Вы должны установить HX-Request заголовок с заглавной HX:

def test_fragment(self):
    headers = {'HX-Request': 'true'}
    response = self.client.get('/', **headers)
    self.assertTemplateUsed(response, 'fragment.html')
Вернуться на верх