SECRET_KEY 设置不能为空 - django+pycharm

Posted

技术标签:

【中文标题】SECRET_KEY 设置不能为空 - django+pycharm【英文标题】:The SECRET_KEY setting must not be empty - django+pycharm 【发布时间】:2017-06-04 21:14:34 【问题描述】:

当然,我搜索了一些帖子,但没有一个有帮助。即使是最接近的也无济于事。

我目前正在使用 pyCharm 使用虚拟环境安装 django。 因为我尝试了很多方法,但没有运气使用 pycharm 运行项目 但是,如果我在终端中使用python manage.py runserver 执行此操作,则服务器运行正常。在所有设置之后不知何故在 pyCharm 中,它只是不让我运行。我在pycharm中哪里设置错了?

不管怎样,我收到了这个错误

raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

我的 manage.py,因为一些帖子正在谈论这个,但我看到它设置正确

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CodingEntrepreneurs.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

我的 settings.py(不用多说,我确实有 KEY)

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'SECRET_KEYSECRET_KEYSECRET_KEYSECRET_KEYSECRET_KEY'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

`

我的文件夹结构

我的运行调试配置

我的 django 框架设置

【问题讨论】:

【参考方案1】:

由于这是 1 月 20 日的问题,我认为它已经解决了。不过,我想分享我对同一问题的修复。

我在这里遇到了同样的问题。我已经挣扎了一段时间。最后,Environment Variables 似乎有问题,如您的第二个屏幕截图所示 (Run/Debug Configurations)

我已经通过更新 Environment Variables 路径来修复它

DJANGO_SETTINGS_MODULE=portfolio; <..crop..>

DJANGO_SETTINGS_MODULE=portfolio.settings; <..crop..>

我必须将settings 添加到DJANGO_SETTINGS_MODULE 路径。

【讨论】:

如果您将 IntelliJ Ultimate 与 python 包一起使用,则会出现相同的问题。将 .settings 添加到 DJANGO_SETTINGS_MODULE 可以解决问题。 很好,在“Django 控制台”设置中设置 DJANGO_SETTINGS_MODULE 也为我解决了这个问题。谢谢! 这对我没有帮助。但是在 intellij 配置中的环境变量中设置 SECRET_KEY 是有效的。 @AbhayManiyar intelliJ 的配置可能不是存储您的密钥的最佳位置,并且会让您在其他计算机上部署/打开项目时遇到麻烦。如果您在 django 设置文件中正确设置了 SECRET_KEY 并且您的设置文件已正确加载,那么它应该可以正常工作。你所做的不是一个正确的解决方案,而是一个糟糕的解决方法恕我直言。 @Nrzonline 我完全同意你的观点,但是在加载设置文件时我遇到了错误,这就是为什么要采用这种解决方法。【参考方案2】:

看起来 PyCharm 不知道您的设置文件在哪里。本质上,如果您曾经使用 runserver 并看到类似的密钥错误,则说明您的设置没有正确加载。

在 django 配置窗口中,设置定义是一个文件夹/目录。那应该是您的设置文件的路径。 manage.py 定义了路径,Pycharm 没有。

此外,如果您右键单击项目根目录并选择“将目录标记为”>“源根目录”。这将帮助 Pycharm 自己解决问题。您还可以标记默认模板目录,或排除目录。

我还建议在项目中使用小写的应用(文件夹)名称。

最后,您的项目结构看起来与大多数人习惯的“标准”有些不同。您可能应该看起来有类似的东西;

- CodingEntrepreneurs
-- .venv
-- myproj
--- myapp

然后在 Pycharm 中,您将从 myproj(而不是 CodingEntrepreneurs)创建一个项目,并且 myproj 将被标记为您的源根目录。

阅读这篇关于项目结构的文章; http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/

除此之外,您还可以通过 python manage.py runserver --settings=CodingEntrepreneurs.settings 指定要运行的设置文件

【讨论】:

我也尝试过右键项目作为根目录但没有运气:( @Dora 尝试指定设置路径; python manage.py runserver --settings=CodingEntrepreneurs.settings 是的,这与在终端中使用 python manage.py runserver 相同。奇怪...我明白你所说的结构是如何不同的。这更奇怪,我喜欢其他 2 个项目设置的设置完全相同的结构我设置 pycharm 的方式与其他两个项目相同,并且一直在查看结构差异,但找不到任何这就是为什么它让我如此困扰很多:(如果我需要重新启动服务器,在终端中继续输入python manage.py runserver很烦人,但最糟糕的是我不能使用pycharm的调试模式:(【参考方案3】:

我遇到了同样的问题,结果证明我是问题所在:

我在 settings.py 文件的顶部设置了 SECRET_KEY = 'mysecretkey' 但没有进一步删除 Django 默认值:

# Make this unique, and don't share it with anybody.
SECRET_KEY = os.environ.get('SECRET_KEY') 

...所以变量每次都会被覆盖。

希望这可以帮助像我一样愚蠢并偶然发现同样问题的人

【讨论】:

以上是关于SECRET_KEY 设置不能为空 - django+pycharm的主要内容,如果未能解决你的问题,请参考以下文章

Django SECRET KEY 错误

Django `SECRET_KEY` 设置

Django 设置“SECRET_KEY”的目的是啥?

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

没有设置运行时错误的secret_key,但是我非常确定我正确设置了密钥

会话不可用,因为没有设置密钥。将应用程序上的 secret_key 设置为唯一且机密的东西。烧瓶/Heroku