自定义静态文件未在 django 项目中加载
Posted
技术标签:
【中文标题】自定义静态文件未在 django 项目中加载【英文标题】:custom static files not loading in django project 【发布时间】:2021-06-18 01:00:39 【问题描述】:我有一个 django 项目,我将所有静态文件保存在项目级别 static
目录中。
我已经包含了
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
在settings.py
。此外,我还在项目级别 urls.py 的 urlpatterns 中添加了 + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
。
我的问题是一些静态文件加载,而有些则没有。为了。例如。我正在使用 django_google_maps
并且(示例 url)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.ico
或 http://127.0.0.1:8000/static/js/image-upload-script.js
)时,它们不会加载并引发 django.views.static.serve
错误,找不到 404。
它们就在目录中。我看到第三方包使用的静态文件加载正确,但不是我自定义的。
我错过了什么?我们是否需要其他东西来加载我们的自定义 js/css 文件?是的,我在模板中使用了% load static %
。
【问题讨论】:
你用过python manage.py collectstatic
吗?
是的,我做到了。 @BiploveLamichhane
可能是缓存问题。你可以使用快捷键重新加载:Ctrl + F5
是的,我已经尝试过了。还要确保我是在隐身模式下完成的,但仍然是同样的问题。
据我所知,你不必担心你叫什么custom static files
。
【参考方案1】:
我一直在项目级别而不是应用级别使用静态文件。任何新的静态文件,我都直接添加到静态目录中,该目录也是我的静态根目录。现在根据这个答案, https://***.com/a/12161409/5379191,
“您的 STATIC_ROOT 目录应该是空的,并且所有静态文件都应该收集到该目录中(即,它不应该已经包含静态文件)”。 所以,最主要的是它不应该已经包含静态文件。
我在项目级目录中创建了一个新的 staticfiles 文件夹,将我的自定义静态文件转移到该目录,运行 collectstatic 命令,然后就成功了。 所以,这里要记住的主要事情是不要直接将你的静态文件放在静态根目录中,而是让 collectstatic 完成它的工作。
【讨论】:
以上是关于自定义静态文件未在 django 项目中加载的主要内容,如果未能解决你的问题,请参考以下文章
DJANGO:静态文件未在实时服务器中加载(但在本地加载)?