Django在退出视图或导航到与当前URL不同的URL时运行一个函数



在我的django应用程序中,当我访问特定的URL(例如:enter_database(时,会调用一个视图函数来添加数据库条目。现在,当我访问不同的URL时,我想清除数据库条目。我的问题是,在离开视图/URL时是否可以调用方法。

注意:我可以通过在每个其他视图中添加逻辑来清除条目,这不是我想要的方法。我正在寻找一种在退出当前显示的视图时调用方法的方法。

在视图的末尾,您必须创建响应对象并返回它。

所以我不知道Django的方式是否正确,但你可以创建自定义的响应类并在这里插入逻辑

class HttpResponseWithDataClearing(HttpResponse):
def __init__(self, content=b'', *args, **kwargs):

# Some custom logic here (clear the entries?)

super().__init__(content, *args, **kwargs)

更改后视图的返回语句

return HttpResponse(...)
↓
return HttpResponseWithDataClearing(...)

要添加自定义逻辑的位置。

如果您想在已经发送响应并移动到另一个页面时添加逻辑,那么在后端是不可能做到的。

您必须在页面离开时设置javascript操作。并对data_clear_url进行ajax请求

window.onunload = function() {
do_ajax_request("data_clear_url");
}
  • EDIT1:onunload方法不工作

我试图重现javascript onunload方法,在这种情况下,ajax请求似乎无法正常使用Chrome。你可以查看这篇文章

相关内容

  • 没有找到相关文章