【问题标题】:Where to store object information django?django在哪里存储对象信息?
【发布时间】:2017-03-19 12:31:16
【问题描述】:

在我的 Django 项目中,我需要不断访问用户的角色(模型)的对象,我应该将这个对象的值存储在哪里?因为我将在多个视图中使用它来显示模板中的内容。我应该存储在会话中,每次都从数据库中检索还是其他替代方法?

class Character(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,primary_key=True)
    gold = models.IntegerField(default=gold)
    points = models.IntegerField(default = startPoints)

【问题讨论】:

  • 为什么不使用缓存?,它似乎更适合你的情况。

标签: python django templates session


【解决方案1】:

不确定character 的确切含义,但是: 如果它不是基于会话的,而是永久信息(我相信它是),您需要将其存储在数据库中以便能够在用户登录时获取它。您将如何存储它并不重要 - 它如果需要,可以是专用表(在这种情况下,最好将用户添加为 FK),也可以是 User 表中的字段。

然后,如果你有 Session 中间件和 Authentication 中间件,你将能够从请求对象访问user 对象,所以你需要做的是: request.user.character

希望对你有帮助。

UPD:将请求之间的数据存储在数据库或缓存系统中的唯一方法(如果您有非数据库缓存,或者您没有将会话存储在数据库中,而是以更快的方式存储 - 例如 Redis 或 Memcache)。我很害怕这是唯一的方法。

对于每个会话的数据,您可以在某些情况下使用 cookie,但我认为并非如此。

【讨论】:

  • 这是一个检索模型值的问题,我不想每次都进入数据库,因为该值经常使用,在它的实现方式上我无法访问它request.user.character
  • 好吧,它是模型中的一个字段,如果您启用了 'auth' 和 'session' 中间件,它无论如何都会被获取 - 所以它不会向数据库添加更多请求。
  • @VictorFerreira 我也更新了我的答案,请检查
猜你喜欢
  • 2013-10-04
  • 1970-01-01
  • 2014-11-14
  • 2011-10-26
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
相关资源
最近更新 更多