django.core.exceptions.ImproperlyConfigured:设置 REDIS_URL 环境变量

问题描述

我使用 Django-Cookiecutter 来启动我的 Django 开发。现在在构建网站并想要托管它之后,我的选择是在任何地方使用 python,这是因为我已经在那里托管了一个网站,但该网站不是使用 Django-Cookiecutter 构建的。要在当前遵循 Django-Cookiecutter Official docs to host on pythonanywhere 的任何地方在 python 上托管它,我已经完成了第一步,直到运行 python manage.py migrate 的时候,这会导致以下错误

django.core.exceptions.ImproperlyConfigured:设置 REdis_URL 环境变量

完整的错误消息是:

Traceback (most recent call last):
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/environ/environ.py",line 273,in get_value
value = self.ENVIRON[var]
File "/home/someone/.virtualenvs/smt/lib/python3.8/os.py",line 673,in __getitem__
raise KeyError(key) from None
KeyError: 'REdis_URL'
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "manage.py",line 35,in <module>
execute_from_command_line(sys.argv)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/core/management/__init__.py",line 401,in execute_from_command_line
utility.execute()
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/core/management/__init__.py",line 395,in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/core/management/base.py",line 330,in run_from_argv
self.execute(*args,**cmd_options)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/core/management/base.py",line 371,in execute
output = self.handle(*args,**options)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/core/management/base.py",line 82,in wrapped
saved_locale = translation.get_language()
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/utils/translation/__init__.py",line 252,in get_language
return _trans.get_language()
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/utils/translation/__init__.py",line 57,in __getattr__
if settings.USE_I18N:
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/conf/__init__.py",line 83,in __getattr__
self._setup(name)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/conf/__init__.py",line 70,in _setup
self._wrapped = Settings(settings_module)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/django/conf/__init__.py",line 177,in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/home/someone/.virtualenvs/smt/lib/python3.8/importlib/__init__.py",line 127,in import_module
return _bootstrap._gcd_import(name[level:],package,level)
File "<frozen importlib._bootstrap>",line 1014,in _gcd_import
File "<frozen importlib._bootstrap>",line 991,in _find_and_load
File "<frozen importlib._bootstrap>",line 975,in _find_and_load_unlocked
File "<frozen importlib._bootstrap>",line 671,in _load_unlocked
File "<frozen importlib._bootstrap_external>",line 783,in exec_module
File "<frozen importlib._bootstrap>",line 219,in _call_with_frames_removed
File "/home/someone/proj/config/settings/production.py",line 26,in <module>
"LOCATION": env("REdis_URL"),File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/environ/environ.py",line 123,in __call__
return self.get_value(var,cast=cast,default=default,parse_default=parse_default)
File "/home/someone/.virtualenvs/smt/lib/python3.8/site-packages/environ/environ.py",line 277,in get_value
raise ImproperlyConfigured(error_msg)

django.core.exceptions.ImproperlyConfigured:设置 REdis_URL 环境变量

当我尝试其他 manage.py 命令(如 python manage.py collectstatic)时,它们产生了相同的错误消息。

解决方法

默认情况下,Django-Cookiecutter 似乎期望生产中的 redis 实例用于缓存 (https://github.com/pydanny/cookiecutter-django/blob/master/%7B%7Bcookiecutter.project_slug%7D%7D/config/settings/production.py#L34)。如果您没有设置 redis,请更新 CACHES 设置以使用不同的缓存后端并移除哨兵 RedisIntegration