在我的网站上,只有在管理部分进行身份验证才需要Cookie和会话。对于所有其他网址,我不想存储cookie或运行会话中间件,因为它会在每个http请求上创建不必要的数据库读/写。
有没有办法在没有认证中间件抱怨缺少会话中间件的情况下禁用所选页面的会话中间件?
答案 0 :(得分:3)
它会在每个http请求上创建一个不必要的DB读/写。
这不正确。 Django只会在您尝试向其写入内容时创建会话 - 在此之前不会创建任何会话,也不会设置会话cookie。来自documentation:
默认情况下,Django仅在修改会话时保存到会话数据库。
请注意,会话cookie仅在创建或修改会话时发送。如果
SESSION_SAVE_EVERY_REQUEST
为True
,则会在每次请求时发送会话Cookie。
(SESSION_SAVE_EVERY_REQUEST
默认为False
)。
因此,对于您所描述的内容,永远不会为不能访问管理员的用户创建会话,并且不会有数据库开销。唯一的小开销是检查会话cookie的中间件。