gpt4 book ai didi

python - 从 settings.py 更改设置变量

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:20 25 4
gpt4 key购买 nike

我正在使用 Django 1.3 和 mod_wsgi

在我的settings.py

DISABLE_SYSTEM = False
DISABLE_USER_INTERFACE = False
MIDDLEWARE_CLASSES = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
]
if DISABLE_SYSTEM:
MIDDLEWARE_CLASSES.insert(0, 'SomeMiddleware')
if DISABLE_USER_INTERFACE:
MIDDLEWARE_CLASSES.append('SomeOtherMiddleware')

当我将 DISABLE_SYSTEM 设置为 True 时,SomeMiddlewareprocess_request 函数返回一 strip 有 的警告消息>HttpResponse 和以下中间件根本不运行。这给了我一种系统关闭以进行维护

DISABLE_USER_INTERFACE 过滤request,用户调用的任何 View 函数都会被阻止,而admin url 和管理函数正常运行。

到目前为止,我用它来进行不同类型的维护,我只需从文件中更改它并touch wsgi来重新加载Python模块。但现在,我需要使用一种预定的例程来停止基于用户的请求,并在后台进行一些维护,并进行一些来自管理员的维护。

此时,系统(而非用户)需要从 settings.pyDISABLE_USER_INTERFACE 设置为 True 并开始维护。但我找不到合适的方法来做到这一点,也找不到更好的方法来处理这个问题,不是从 settings.py 而是在其他地方。

settings py 中的行比更改 DISABLE_USER_INTERFACE 是因为我需要每天使用此函数一次,并且对每个请求使用这两个中间件对我来说似乎不合逻辑。所以在我当前的模型中,它们仅在需要运行时才运行

如有任何建议,我们将不胜感激。

更新:我想要做的是每天 19:00 - 19:30 期间禁用用户界面。我不确定是否要进行中间件级别检查,例如:

if 19:00<now()<19:30:
stop system

针对每个请求。我需要更有效的东西来避免不必要的过程。或者中间件是此类工作的正确选择吗?

最佳答案

当您计划更改设置后,您可能需要重新考虑您正在做的事情。

您的中间件可以变得更加智能。这使得您的设置可能变得非常非常愚蠢。

我强烈建议您始终安装一个 SomeMiddleware 类。

SomeMiddleware 类可以检查设置并决定它应该执行哪种行为。

还有更好的方法来做到这一点。

您不一定需要修改计划维护的设置。在运行的 Django 应用程序中,您有很多很多与中间件通信的方法。最快的方法之一是通过数据库。

您可以有一个“操作模式”类定义,其中包含一个(或几个)属性,中间件可以简单地获取这些属性以查看发生了什么。您可以编写管理应用程序来对此表进行简单的更新以更改模式。

您可以使用“操作模式”文件名(如果存在)来更改中间件的行为。您只需执行 os.path.exists() 类函数即可(快速)检查要做什么。

关于python - 从 settings.py 更改设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com