我启用了django auth中间件,所以现在我的请求上下文中有一个用户变量。 在这种情况下,对于每个页面请求,将从数据库中查询用户对象。是否可以将此中间件设置为使用缓存的用户对象(例如,我在会话中放置的那个)? 用户对象不会经常更新,因此我不需要为每个页面添加额外的数据库查询。 感谢。
答案 0 :(得分:1)
是的,你当然可以做到这一点,我认为这也是一个好主意:)
我使用自定义身份验证后端执行此操作,其中get_user方法尝试从缓存中检索用户(如果缓存未命中,则从db检索)。
答案 1 :(得分:1)
是的,您可以将用户存储在会话中。
您唯一需要注意的是,如果您对该用户对象进行了更改,那么在您推送更新时登录系统的用户可能没有更改(即您添加的属性)。
确保让中间件检查对象,或者在可能的地方写一些代码。这可能是您只是为了发布用户更改而放弃的内容,然后在发布后撤出。 (如果你使用的是django auth用户,你根本不会改变它)