在我的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)
答案 0 :(得分:0)
不确定究竟是什么意思character
,但是:
如果它不是基于会话的,而是永久性信息(我相信它是),你需要将它存储在数据库中,以便在用户登录时能够获取它。你将如何存储它并不重要 - 它如果你需要它可以是专用表(在这种情况下将用户添加为FK会很好)或者它可以是User
表中的字段。
然后,如果您有Session中间件和Authentication中间件,您将能够从请求对象访问user
对象,因此您需要做的是:
request.user.character
我希望它有所帮助。
UPD:在数据库或缓存系统中的请求之间存储数据的唯一方法(如果你有非数据库缓存,或者你没有在数据库中存储会话,而是在更快的速度存储 - 比如Redis或Memcache)。我担心这是唯一的方法。
对于每会话数据,您可以在某些情况下使用Cookie,但我认为情况并非如此。