在我的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。你可以查看这篇文章