在 Ubuntu 20.4 上使用 postgresql 设置的 Django cookiecutter 无法迁移
Posted
技术标签:
【中文标题】在 Ubuntu 20.4 上使用 postgresql 设置的 Django cookiecutter 无法迁移【英文标题】:Django cookiecutter with postgresql setup on Ubuntu 20.4 can't migrate 【发布时间】:2021-04-30 00:39:53 【问题描述】:我在 Ubuntu 20.4 中安装了 django cookiecutter 当我尝试迁移到数据库时使用 postgresql 时出现此错误:
python manage.py 迁移 Traceback(最近一次调用最后一次):文件“manage.py”,第 10 行,在 execute_from_command_line(sys.argv) 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/init.py”, 第 381 行,在 execute_from_command_line utility.execute() 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/init.py”, 第 375 行,执行中 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/base.py”, 第 323 行,在 run_from_argv self.execute(*args, **cmd_options) 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/base.py”, 第 361 行,执行中 self.check() 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/base.py”, 第 387 行,检查中 all_issues = self._run_checks(文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/management/commands/migrate.py”, 第 64 行,在 _run_checks 问题 = run_checks(tags=[Tags.database]) 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/checks/registry.py”, 第 72 行,在 run_checks 中 new_errors = check(app_configs=app_configs) 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/core/checks/database.py”, 第 9 行,在 check_database_backends 中 对于connections.all()中的conn:文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/db/utils.py”, 第 216 行,总共 return [self[alias] for alias in self] 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/db/utils.py”, 第 213 行,在 iter 中 返回迭代器(self.databases)文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/utils/functional.py”, 第 80 行,在 get res = instance.dict[self.name] = self.func(instance) File "/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/db /utils.py", 第 147 行,在数据库中 self._databases = settings.DATABASES 文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/conf/init.py”, 第 79 行,在 getattr 中 self._setup(name) 文件 "/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/conf/init.py", 第 66 行,在 _setup 中 self._wrapped = 设置(settings_module)文件“/home/mais/PycharmProjects/django_cookiecutter_task/venv/lib/python3.8/site-packages/django/conf/init.py”, 第 176 行,在 init 中 raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY 设置不能为空。
我在 cookiecutter 文档中完成了全部说明并创建了 b 有什么问题?
【问题讨论】:
【参考方案1】:Python 库非常多,为了使事情变得简单并使代码可重用,模块相互调用。首先,看到这么大的错误不要害怕。它只是对错误的回溯,因为一个代码调用另一个代码,另一个代码调用另一个代码。要调试任何此类问题,查看第一个和最后一个 .py 文件名很重要。在您的情况下,回溯中的嵌套如下:
Traceback Flowchart
所以,你的关键问题是 SECRET_KEY 设置不能为空。 我建议将密钥放在“config/.env”文件下,如下所述:
https://wemake-django-template.readthedocs.io/en/latest/pages/template/django.html#secret-settings-in-production
最初,您应该在项目文件夹的 setting.py 文件中找到 SECRET_KEY。但它需要在生产/现场环境中的 .env 文件中。并且永远不要在 github 甚至这里发布实时环境的 SECRET_KEY,因为这会带来安全风险。
【讨论】:
错误是 ModuleNotFoundError: No module named 'project_name.settings.dev' 但是我在设置目录中添加了一个空文件 dev.py 然后得到这个错误 它是否与您获取 cookiecutter 的链接有关? 仅在提及时添加文件。此外,如果您正在尝试新软件,请在 docker 容器中尝试。这样您就不会破坏系统的库。现在,您有 3 个选项: 1. 发布所有新的错误日志 2. 在 docker 容器上重新开始 3. 按照此处的每个步骤操作:cookiecutter-django.readthedocs.io/en/latest/… 请不要着急,这会导致错误,您会得到 -有动机认为你无法学习 Django。我认为你可以学习 Django,只是慢一点:) 另外,如果您可以分享您正在尝试实施的项目,那么我们可以更好地解决它。【参考方案2】:您的主要问题在日志中非常清楚。
你需要设置你的环境SECRET_KEY
给它一个值,它应该跳过这个错误信息,如果有一些其他的配置没有正确设置它可能会抛出另一个错误。
【讨论】:
以上是关于在 Ubuntu 20.4 上使用 postgresql 设置的 Django cookiecutter 无法迁移的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Ubuntu 20.4 服务器上运行 npm install