VSCode Django Virtualenvwrapper

问题描述

嗨,我有使用 Virtualenvwrapper 的 django 项目。 我使用 VSCode 并在终端中为我工作等。 我有 3 个文件设置可以在本地服务器和 VPS 服务器中运行项目。 我从设置中删除了我的 SECRET_KEY 和所有带有代码文件到 json 文件。 并像这样运行项目: 处理 env_name (env_name) 在 my_project 上工作 python manage.py runserver --settings settings.local2 这适用于这样的文件: 像这样:

from my_project.settings import *
import json
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
with open('keys_my_project.json') as config_file:
    config = json.load(config_file)

SECRET_KEY = config['SECRET_KEY']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2','NAME': config['NAME'],'USER': config['USER'],'PASSWORD': config['PASSWORD'],'HOST': config['HOST'],'PORT': '5432',}
}

DEBUG = True

ALLOWED_HOSTS = []

STATICFILES_Dirs = [
    os.path.join(BASE_DIR,"static"),]

STATIC_ROOT = os.path.join(BASE_DIR,'static_root')
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

现在我在使用 VSCode 调试器时遇到问题:

        {
        "name": "my_project django","type": "python","request": "launch","program": "my_project/manage.py","args": ["runserver --settings settings.local2"],"django": true
    }

我的错误

Exception has occurred: ImproperlyConfigured
The SECRET_KEY setting must not be empty.
  File "my_project\manage.py",line 18,in main
    execute_from_command_line(sys.argv)
  File "my_project\manage.py",line 22,in <module>
    main()

为什么我的 VSCode 调试器不读取设置文件中的 json ?

ps。我的管理.py

import os
import sys


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE','my_settings.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        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?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

解决方法

变化:

class B

致:

"args": ["runserver --settings settings.local2"],
,

假设您的问题 (--settings settings.local2) 中的错字没有隐藏在您的代码中,我不确定您的确切问题。但是,如果您不介意其他建议,我建议您使用 vscode 的内置功能来处理环境变量。它沿着

    {
        "name": "my_project django","type": "python","request": "launch","program": "${workspaceFolder}/my_project/manage.py","env": {
            "DJANGO_SETTINGS_MODULE": "my_project.config.settings","NAME": "Johnny","SECRET_KEY": "foo",.... and so forth....
        }
        "args": [
            "runserver","--noreload","--nothreading"
        ],"django": true
    }

您也可以使用 .env 文件:

"envFile": "${workspaceFolder}/.env",

然后您可以使用 settings.py

os 中调用这些
import os
SECRET_KEY = os.environ.get('SECRET_KEY','foo')

另请注意 ${workspaceFolder}--nothreading 的使用,甚至可能值得在重构之前使用它们并查看会发生什么。