Django 静态文件仅在调试器启动时显示(DEBUG=True)

问题描述 投票:0回答:1

我使用 daphne 作为 Django 服务器,并在 settings.py 中将 daphne 集成到 runserver

从昨天开始,我在使用 DEBUG=True 的静态文件时遇到了一个奇怪的错误,(所以,不,这不是 DEBUG=False 时找不到静态文件的另一种情况!;)

当我运行时,它们不会出现

python manage.py runserver
,但是当我使用 VS Code 中的调试器运行应用程序时,它们就会出现。 所以我的设置以某种方式工作,但仅在调试中......

在settings.py中,我有:

STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = 'static/'
INSTALLED_APPS = [
...
    'django.contrib.staticfiles',
...
]

我的 launch.json 是:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: Django",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/manage.py",
            "args": ["runserver"],
            "django": true,
            "autoStartBrowser": false,
            "justMyCode": false,
        }
    ]
}

因此它也运行相同的命令(runserver)。

静态文件存放在各个app的static//目录下。

有什么想法吗?

编辑:

BASE_DIR = Path(file).resolve().parent.parent

urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
django debugging vscode-debugger
1个回答
0
投票

您的 urls.py 静态配置查找不完整,您仅设置媒体文件查找,

在您的项目 urls.py 下方插入此代码片段,并确保您已导入

from django.conf.urls.static import static


if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,
                          document_root=settings.STATIC_ROOT)

    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

由于我们无法在您的settings.py 文件中看到您的静态配置,请确保您已配置它,如果没有,则获取下面的代码片段,并将其粘贴到您的设置中的静态文件设置中。

STATIC_URL = '/static/'

# create the folder called `static` in your project root directory
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = 'static_root'

MEDIA_URL = '/media/'
# create the folder called `media` in your project root directory
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
TEMPLATE_DEBUG = True



最后,确保您使用的

daphne
服务器是您添加到
INSTALLED_APPS 
列表中的第一个应用程序,以避免程序出现不必要的行为。

© www.soinside.com 2019 - 2024. All rights reserved.