您应该看一下here和here。
本质上,django的查询集是惰性的,它们维护缓存,这意味着它们只在第一次评估时才调用db。这意味着您的profile
变量将仅在其生命周期内查询数据库一次(除非您执行profile.filter()
或类似的更改查询,在这种情况下必须重新评估它。)
现在,关于你的问题的重要部分是变量的生命周期。一旦返回定义的方法,它将超出范围,换句话说,它将为每个新请求重新创建,查询数据库。为了避免这种情况,您可以使用memcached或类似的系统 OR 来缓存结果,方法是将profile
变量设为全局变量,这将在请求之间保持不变。