htmx: hx-target: 交换 html 与整页重新加载

问题描述

我有一个包含多个表单的页面

如果用户提交了一个表单,那么只有当前表单应该被提交(而不是页面的其他表单)。

在服务器上验证表单。

案例 1:如果验证失败,则服务器将 html 发送到客户端,并且应该交换特定表单并将新表单添加到 DOM。这个新表单包含一条错误消息。用户现在可以修复他的错误并再次提交表单。

案例2:表单验证成功,数据被保存。现在我想在客户端触发整页重定向

我阅读了 htmx hx-target 的文档。我设法让 case-1 正常工作(我喜欢 htmx 的这个功能)。

但是服务器如何触发整页重定向

解决方法

我发现了这个:

您可以使用 HX-Redirect http 响应标头在客户端上触发重定向。

我创建了这个类。这样一个片段可以触发整个页面的重新加载:


class HTTPResponseHXRedirect(HttpResponseRedirect):
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self['HX-Redirect']=self['Location']
    status_code = 200