我正在使用 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.htmlHTMX 元素中觸發需要此片段的 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 : Template 'fragment.html' 不是用于呈現回應的模板。實際使用的模板:page.html
如何模擬 HTMX 請求以便測驗我的片段邏輯?
uj5u.com熱心網友回復:
Django-HTMX的標頭檢查區分大小寫(這是一個字典鍵查找)。你必須用大寫設定HX-Request標題HX:
def test_fragment(self):
headers = {'HX-Request': 'true'}
response = self.client.get('/', **headers)
self.assertTemplateUsed(response, 'fragment.html')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/487643.html
上一篇:瀏覽器未打開VisualStudioC#Selenium
下一篇:量角器獲取出現的第二個元素
