将代码放在settings.py中,而不是赋值是不好的做法。它更适合作为管理命令:
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
def handle(self, *args, **kwargs):
cache.clear()
self.stdout.write('Cleared cache\n')
您可以通过将其粘贴到someapp / management / commands中来添加到项目中。例如,您可以创建一个名为utils的新应用程序,并将其添加到INSTALLED_APPS中,目录结构将如下所示:
utils
├── __init__.py
└── management
├── __init__.py
└── commands
├── __init__.py
└── clearcache.py
您现在可以通过执行./manage.py clearcache来清除缓存。如果你想在每次运行服务器时运行clearcache,你可以写一个shell别名来做到这一点:
alias runserver='./manage.py clearcache && ./manage.py runserver'
from django.conf import settings
# obviously change CACHES to your settings
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
settings.configure(CACHES=CACHES) # include any other settings you might need
from django.core.cache import cache
cache.clear()
编写这样的独立脚本将阻止循环导入,并允许您从settings.py导入它。虽然不能保证settings.py只能导入一次,但是一般来说,我会避免这样做。如果信号框架每次启动应用程序时都会触发一个事件,那么在这样的设置被加载之后,这将是很好的。