如果用户离开某些页面,则Django清除请求会话值

时间:2013-07-30 19:54:05

标签: django django-sessions

每次用户从某些页面导航时,我都需要清除请求会话变量。

我正在考虑编写自己的中间件来实现这样的事情并实现process_request 在需要时清除变量。

你觉得怎么样?

你知道更好的解决方案吗?

它会立即损害性能吗?

10倍

1 个答案:

答案 0 :(得分:3)

您可以使用request_finished信号检测HTTP请求并触发函数以获取当前页面的路径,以检查用户是否已导航到其他页面。如果有,则可以在会话中调用flush(),或将特定会话var设置为nil等。

类似的东西:

from django.core.signals import request_finished

def check_url(request):
    original_path = '/path_to_original_page'
    if HttpRequest.get_full_path(request) != original_path:
        request.session.flush()

request_finshed.connect(check_url, sender)

有关详细信息,请查看SignalsSessions上的文档。我不认为为此编写自己的中间件是必要的,但选择适合您需要的任何内容。