我使用 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)
您的 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
列表中的第一个应用程序,以避免程序出现不必要的行为。