【问题标题】:Create object in Django once when the server starts and use it throughout服务器启动时在 Django 中创建一次对象并在整个过程中使用它
【发布时间】:2016-07-25 20:40:15
【问题描述】:

我正在开发 Django 项目。我只需要在服务器最初启动时创建一次对象。我想在用户每次访问特定页面时使用与该特定对象关联的方法,也就是说,我希望在视图中可以访问该对象的属性和方法,而不必一次又一次地实例化该对象。

具体是怎么做的?

【问题讨论】:

  • 这并不理想,但你可以看看这个:docs.djangoproject.com/en/dev/ref/applications/…
  • 实际上,实例化该对象命中数据库。并始终检索相同的数据。所以我想避免这种情况,并希望在开始时实例化一次,并且仍然能够在我的视图中使用检索到的数据
  • 那么你需要将它保存在 django 会话中,它是基于每个用户的:docs.djangoproject.com/en/1.9/topics/http/sessions
  • 相反,是否有可能拥有一个在服务器启动时实例化的全局对象?
  • 如果它访问数据库,这只是在服务器进程的整个生命周期中拥有一个全局实例的更多理由。如果数据库值发生变化怎么办?然后您必须重新加载服务器才能使更改生效。两个数据库查询不应该有任何显着差异,除非您正在做一些非常复杂的事情,即使那样,您很可能最好弄清楚如何优化这些查询,而不是将全局对象入侵到您的应用程序中。全局对象有很多陷阱和极端情况,你应该只在最后的手段使用它们。

标签: python django object static django-views


【解决方案1】:

尝试制作一个fixture,在运行服务器之前使用manage.py loaddata

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多