django 项目中未加载自定义静态文件

问题描述

我有一个 django 项目,我将所有静态文件保存在项目级别 static 目录中。 我已经包括

STATIC_URL = "/static/"

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

settings.py 中。此外,我已将 + static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 添加到项目级别 urls.py 中的 urlpatterns。

我的问题是某些静态文件会加载,而有些则不会。为了。例如。我正在使用 django_google_maps 并且(示例网址)http://127.0.0.1:8000/static/django_google_maps/js/google-maps-admin.js 正确加载并完成了相应的工作。

但是当我尝试加载我的自定义 js/css/any-static 文件(例如 url http://127.0.0.1:8000/static/images/favicons/favicon.icohttp://127.0.0.1:8000/static/js/image-upload-script.js)时,它们不会加载并引发 django.views.static.serve 错误404 未找到。 不过,它们就在目录中。我看到第三方包使用的静态文件加载正确,但不是我自定义的。

我错过了什么?我们是否需要其他东西来加载我们的自定义 js/css 文件?是的,我在模板中使用了 {% load static %}

解决方法

我一直在项目级别而不是应用级别使用静态文件。任何新的静态文件,我都直接添加到静态目录中,该目录也是我的静态根目录。现在根据这个答案, https://stackoverflow.com/a/12161409/5379191,

“您的 STATIC_ROOT 目录应该是空的,并且所有静态文件都应该收集到该目录中(即,它不应该已经包含静态文件)”。 所以,最重要的是它不应该已经包含静态文件。

我在项目级目录中创建了一个新的 staticfiles 文件夹,将我的自定义静态文件转移到该目录,运行 collectstatic 命令,然后繁荣它工作。 所以,这里要记住的主要事情不是直接将静态文件放在静态根目录中,而是让 collectstatic 完成它的工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...