Htmx: hx-target-error не работает, когда hx-target определен (django python)

Я использую расширение htmx "response-targets" через "hx-ext" в проекте python django.

Проблема

"hx-target-error" не будет работать, если "hx-target" также определен, но будет работать, если это единственная target.

Окружающая среда

htmx 1.9.10, response-targets 1.9.10, python 3.12, django 5.0.1

Пример html:

<div hx-ext="response-targets">
    <button
        hx-get={% ur "app name:endpoint" %}
        hx-target-error="#id-fail"
        hx-target="#id-success"
        type="submit"
     >
         Press Me!
     </button>
</div>

hx-цель

Пробовал с различными другими типами целей, такими как "next td", "next span" и т.д. Все они дают значения "request.htmx.target" в конечной точке, определенной в views.py.

hx-target-error

Также пробовали различные альтернативы, поддерживаемые в response-targets, такие как "hx-target-*", "hx-target-404" и т.д. без изменений в результатах.

Я проверил, что "response-targets" установлен правильно и используется корректно, потому что когда "hx-target" удален из "кнопки", то "hx-target-error" работает.

Генерация ошибок в файле views.ph

@login_required
def endpoint(request)
    return HttpResponseNotFound("Not found 404")

Журналы

Bad Request: /testbed/endpoint/
127.0.0.1 - - [27/Feb/2024 19:53:51] "GET /testbed/get-error-400/ HTTP/1.1" 400

ответы-цели расширения

https://htmx.org/extensions/response-targets/

Решено: Решение заключается в перемещении атрибута "hx-ext" <div hx-ext="response-targets"> на более высокий уровень, чем все элементы DOM, на которые ссылаются "hx-target" или "hx-target-error".

В моем случае "hx-target-error" указывал на div 'id' вне div, содержащего "hx-ext".

Спасибо @guigui42 за предложение этого решения

Пример неправильного использования:

<tr>
    <td>
        <div hx-ext="response-targets">
            <button
                hx-get={% url "testbed:rebound" %}
                hx-headers='{"custom": "{{ test.id }}"}'
                hx-target-error="#GET-{{ test.id }}-fail"
                hx-target="#GET-{{ test.id }}-ok"
                class="btn btn-sm btn-primary testbed-btn"
            >
                GET {{ test.msg }}
            </button>
        </div>
    </td>
    <td>
        <span id="GET-{{ test.id }}-ok" />
        <span class="text-danger" id="GET-{{ test.id }}-fail" />
    </td>
</tr>

Пример правильного использования:

<tr hx-ext="response-targets">
    <td>
        <button
            hx-get={% url "testbed:rebound" %}
            hx-headers='{"custom": "{{ test.id }}"}'
            hx-target-error="#GET-{{ test.id }}-fail"
            hx-target="#GET-{{ test.id }}-ok"
            class="btn btn-sm btn-primary testbed-btn"
        >
            GET {{ test.msg }}
        </button>
    </td>
    <td>
        <span id="GET-{{ test.id }}-ok" />
        <span class="text-danger" id="GET-{{ test.id }}-fail" />
    </td>
</tr>
Вернуться на верх