哪里存放对象信息django?

时间:2016-11-05 21:51:40

标签: python django templates session

在我的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)

1 个答案:

答案 0 :(得分:0)

不确定究竟是什么意思character,但是: 如果它不是基于会话的,而是永久性信息(我相信它是),你需要将它存储在数据库中,以便在用户登录时能够获取它。你将如何存储它并不重要 - 它如果你需要它可以是专用表(在这种情况下将用户添加为FK会很好)或者它可以是User表中的字段。

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

我希望它有所帮助。

UPD:在数据库或缓存系统中的请求之间存储数据的唯一方法(如果你有非数据库缓存,或者你没有在数据库中存储会话,而是在更快的速度存储 - 比如Redis或Memcache)。我担心这是唯一的方法。

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