在Windows主机内的虚拟机guest上运行Debian。为适配器类型设置Bridged。在guest虚拟机上安装Django并使用内置runserver
和内置数据库进行测试。
具有简单的文件结构:
> ..
> templates
> base.html
> static
> css
> base.css
> manage.py
> setting.py
> ..
档案settings.py
:
STATIC_URL = '/static/'
档案base.html
:
{% load static %}
...
<link rel="stylesheet" href="{% static 'css/base.css' %}">
得到错误,未找到:
GET http://192.168.XX.XX:8000/static/css/base.css
Debug
中的 settings.py
设置为true(表示应该使用静态文件)。该链接看起来正确。现在为什么这不起作用?
编辑:看起来我忘了运行'collectstatic'。以下是运行后的输出:
EDIT2:
EXTERNAL_APPS = [
..
'django.contrib.staticfiles',
]
PROJECT_NAME = 'fooproject'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, PROJECT_NAME, 'staticfiles')
STATIC_URL = '/static/'
答案 0 :(得分:5)
我在ChristophBluoss和DanielRoseman的帮助下设法解决了我的问题。有两个问题:
python manage.py collectstatic
。STATIC_ROOT
和STATICFILES_DIRS
。将这些变量添加到settings.py
文件并成功运行collectstatic
后 - 一切正常。
P.S。应该更仔细地阅读Django文档。我没有明确表示collectstatic
是强制性的。
编辑:当collectstatic
设置为STATIC_ROOT
时,DanielRoseman建议DEBUG
和True
是非强制性的。我试图删除staticfiles
和STATIC_ROOT
- 它仍然适用于我的开发环境。所以STATICFILES_DIRS
是缺失的设置。