Django:未找到静态文件

2024-04-18 16:46:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在Windows主机内的虚拟机guest上运行Debian。为适配器类型设置桥接。在客户机上安装了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

settings.py中的Debug设置为true(表示应保存静态文件)。链接看起来是正确的。为什么这不管用?

编辑:看起来我忘记运行“collectstatic”。下面是运行后的输出:

enter image description here

编辑2:

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

Tags: 文件pathpyurl编辑basesettingsos
1条回答
网友
1楼 · 发布于 2024-04-18 16:46:06

我在克里斯托夫布劳斯和丹尼尔罗斯曼的帮助下设法解决了我的问题。有两个问题:

  1. 我还没跑python manage.py collectstatic
  2. 配置错过了关键设置-STATIC_ROOTSTATICFILES_DIRS

在将这些变量添加到settings.py文件并成功运行collectstatic之后,一切正常。

注:一个人应该更仔细地阅读Django文档。我说得不够清楚,collectstatic是强制性的。

DEBUG设置为True时,collectstaticSTATIC_ROOT一起编辑:是非强制的。我试图删除staticfilesSTATIC_ROOT-但它仍然在我的开发环境中工作。所以STATICFILES_DIRS是缺少的设置。

相关问题 更多 >