【问题标题】:Altering custom settings variable in django at runtime在运行时更改 django 中的自定义设置变量
【发布时间】:2015-06-14 16:58:03
【问题描述】:

我已经读到设置变量不应该在运行时被更改也提到了here。但是,如果我们定义一个自定义设置变量,它可以在运行时更改吗? 如果我这样做有什么缺点吗? 前任: settings.CUSTOM_VAR = '20' #done in one of the views

【问题讨论】:

  • 问题是 Django 在某些情况下无法识别这些修改。例如,假设您在运行时更改 INSTALLED_APPS,该设置定义了哪些模块可以导入,哪些模块不能......这将是一团糟。
  • @lapinkoira 谢谢你的回复。这些是 django 定义的变量,但是如果我有像 MYVARIABLE = 'xyz' 这样的自定义变量并且我更改了这个变量值,会不会引起问题?
  • 你可以这样做,但它会被覆盖而不是建议。我必须做类似的事情,我使用与客户等相关的数据库中的站点设置模型来做到这一点

标签: django


【解决方案1】:

这不是一个好方法。重新启动或更新服务器后,您更新的设置将被设置中定义的变量覆盖。

您可以使用可更改的设置创建自己的设置模型并使用它或获取一些配置应用程序,如django-constancedjango-solo 或其他东西并合法地更改它们。

【讨论】:

  • 谢谢。这是一个很好的观点,当我重新启动服务器时,我可能会丢失这些值。你能告诉我,我如何从另一个文件中设置一些自定义设置变量,可以在服务器启动时加载?
  • @Dalon 你为什么要从文件中加载一些东西?为什么不使用数据库进行设置?当您将设置存储在 db 中时,您可以轻松地手动更改它们,或者从代码或管理命令中更改它们,如果您愿意,它们会解析一些文件。
  • 其实我打算做同样的事情,将其存储在数据库中,然后检索它。感谢您的意见
  • 谁能确认我是否有一个有效的动态设置用例?即,它仅存储对系统当前正常运行时间有效的数据 - 如果重新启动,则数据“丢失”,这是可以接受的(在这种情况下),因为它将被重新创建,然后存储适用于下一个周期的数据正常运行时间。
猜你喜欢
  • 2015-07-11
  • 2011-09-25
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2019-02-26
相关资源
最近更新 更多