【问题标题】:Django - 404 static files not foundDjango - 找不到 404 个静态文件
【发布时间】:2017-05-25 19:05:45
【问题描述】:

我知道大约有一百万个这样的问题,但没有一个对我有帮助。

我无法访问我的静态文件进行部署,我已将我的设置文件放入基础和生产中,并将它们放在 settings.py 原始文件的文件夹中。

我已经做了所有必要的事情,但它似乎仍然无法正常工作,我无法终生解决它。

我已尝试多次编辑路径,但没有任何变化。

也许我错过了一些明显的东西,而其他人可以看到它。

  1. venv
  2. --项目
  3. ----app1
  4. ------静态文件夹
  5. ----wsgi文件夹
  6. -----settings_old.py
  7. ------新建设置文件夹
  8. ---------base.py
  9. ---------production.py

base.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = ['django.contrib.staticfiles',]

STATIC_URL = '/static/'

STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
STATIC_ROOT = os.path.join(BASE_DIR, 'static_r')

STATICFILES_FINDERS = ( 
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

我尝试了几种不同的方法,例如从 BASE_DIR 更改为新的 PROD_DIR,该 PROD_DIR 直接转到 index.html 中的静态文件。

PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))
PROD_ROOT= os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath('__file__' ))))
PROD_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))

似乎没有任何效果。

更新:

正如其他人建议的那样,我尝试过 collectstatic,但是找到了文件夹 env/project/static_r,我明白了

'0 个文件复制到 static_r'。

此外,我也按照建议打印了 base_dir 和 prod_dir 并得到以下内容

"prod 是 /user/venv/project" & "base 是 /user/venv/project/wsgi-folder"

p.s 这是在我将 prod_dir 编辑为 -

之后
PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))

【问题讨论】:

  • 您是否进入了您的虚拟环境(或者您是否使用过)并运行python manage.py collectstatic
  • 他为什么有BASE_DIR 和两个dirname 函数?可能有问题吗?
  • @JanSila 因为 base.py 是另一个低于原始 settings.py 的目录,但是我只尝试了一个,但它仍然没有工作
  • @MattCremeens 我还没有运行 collectstatic 但它应该基于 STATIC_DIR 工作但无论如何我现在会检查并回复你

标签: python django


【解决方案1】:

我不太确定,但你确定它是 STATIC_DIRS 而不是 STATICFILES_DIRS? '-'

【讨论】:

  • OMFG 你的绝对天使先生/女士。在过去的 36 小时里,我真的一直在拔头发。非常感谢,谢谢!
  • 没关系 :) 这已经发生在我身上,我有 STATICFILES_DIR 而不是 STATICFILES_DIRS,我真的不知道这是我的错误 xD
【解决方案2】:

根据您的设置,您的静态文件应位于 /project/static/ 而不是单个应用程序中。

您还需要按照documentation 中的说明加载静态文件

{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>

【讨论】:

  • 是的,我已经使用标签加载了静态文件
【解决方案3】:

为了测试你的路径,你总是可以做的就是打印它。

所以在你的设置中这样做

print BASE_DIR, STATIC_DIRS, STATIC_ROOT

你会看到你的错误在哪里。

在我看来,这是您将静态文件夹放在应用程序中而不是项目中的事实,因为collectstatic 无论如何都会将所有静态文件放在一个目录中

【讨论】:

  • 为这个想法干杯,我已经完成并更新了问题
猜你喜欢
  • 2019-01-12
  • 2021-01-25
  • 2017-09-13
  • 2011-07-23
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多