每次用户从某些页面导航时,我都需要清除请求会话变量。
我正在考虑编写自己的中间件来实现这样的事情并实现process_request 在需要时清除变量。
你觉得怎么样?你知道更好的解决方案吗?
它会立即损害性能吗?
10倍
答案 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)
有关详细信息,请查看Signals和Sessions上的文档。我不认为为此编写自己的中间件是必要的,但选择适合您需要的任何内容。