Django+HTMX实时搜索问题:清空搜索词后页面重复渲染
Django+HTMX实时搜索清空时重复渲染问题解决
问题根源
清空搜索框时,视图返回了完整的pkes/search.html页面,HTMX会将该页面内容替换到#search-results容器中,导致页面嵌套重复——原页面的#search-results容器内被插入了另一个完整的search.html,进而出现重复渲染异常。
解决方案
修改视图逻辑,无论是否存在搜索关键词,统一返回仅负责渲染搜索结果的search_results.html模板,而非完整页面:
修改后的view.py代码
class SearchView(View): @staticmethod def get(request): search_term = request.GET.get('search', None) if search_term: roads = Road.objects.filter(name__contains=search_term).all()[:100] else: roads = [] # 统一返回搜索结果模板,避免嵌套完整页面 return render(request=request, template_name='search_results.html', context={ 'roads': roads, })
说明
- 当搜索词为空时,
roads列表为空,search_results.html中的循环不会生成任何内容,正好实现清空搜索结果的效果。 - 页面初始加载时,
search.html通过{% include "search_results.html" %}展示空结果,符合预期。
内容的提问来源于stack exchange,提问作者EnriqueRBT
相关产品推荐
相关产品推荐

