在Django中,当进行HTMX调用时,是否有返回空模板的约定?

vxbzzdmp  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(181)

在某些情况下,我不希望在视图中返回任何HTML。除了返回一个空白的html文件之外,有没有什么好的方法呢?
以下是我目前拥有的:
views.py

def get_suites(request):
    address = request.GET.get('address')
    rental_units = Rental_Unit.objects.filter(address__address=address).order_by('suite')
    # return empty html requests
    if len(rental_units) > 1:
        return render(request, 'suite_list.html', {'rental_units': rental_units})
    else:
        return render(request, 'empty.html')

suite_list.html

<label for="suite">Suite</label>
<select name="suite" id="suite">
    <option value="all">All</option>
    {% for rental_unit in rental_units %}
      <option value="{{rental_unit.suite}}">{{rental_unit.suite}}</option>
    {% endfor %}
</select>

main.html

<label for="address">Address</label>
  <select name="address" id="address" hx-get="/get_suites" hx-target="#suite-wrapper">
    <option value="all">All</option>
    {% for address in addresses %}
      <option value="{{address}}">{{address}}</option>
    {% endfor %}
  </select>
  <div id="suite-wrapper" style="display:inline"></div>
30byixjq

30byixjq1#

你可以只返回一个空的httpresponse对象,完全避免使用render函数。

from django.http import HttpResponse
...
else:
    return HttpResponse()

这是render方法在结合上下文和模板创建HTML后返回的内容,因此通过简单地返回不带HTML的httpresponse,您可以避免查找不存在的内容(即空模板)

相关问题