Django:找不到静态文件

时间:2016-12-02 09:38:42

标签: python css django

在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'。以下是运行后的输出:

enter image description here

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/'

1 个答案:

答案 0 :(得分:5)

我在ChristophBluoss和DanielRoseman的帮助下设法解决了我的问题。有两个问题:

  1. 我没有跑python manage.py collectstatic
  2. 配置错过了重要设置 - STATIC_ROOTSTATICFILES_DIRS
  3. 将这些变量添加到settings.py文件并成功运行collectstatic后 - 一切正常。

    P.S。应该更仔细地阅读Django文档。我没有明确表示collectstatic是强制性的。

    编辑:当collectstatic设置为STATIC_ROOT时,DanielRoseman建议DEBUGTrue是非强制性的。我试图删除staticfilesSTATIC_ROOT - 它仍然适用于我的开发环境。所以STATICFILES_DIRS是缺失的设置。