1

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

我正在考虑为此类事情编写自己的中间件,并在需要时实现 process_request 以清除变量。

你怎么看?

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

它会立即损害性能吗?

10倍

4

1 回答 1

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)

查看有关信号会话的文档以获取更多信息。我认为没有必要为此编写自己的中间件,但请选择适合您需要的任何中间件。

于 2013-07-31T02:07:54.147 回答