首页 > 解决方案 > Django静态文件在collectstatic后解析

问题描述

我跑了

python manage.py collectstatic

所以我在“/static”文件夹中有我的静态文件的副本。

但是现在 Django 使用来自 /static/myapp/js/myapp.js 的文件,而不是来自 myapp/static/myapp/js/myapp.js 的文件

我应该先改变什么来解决 myapp/static/myapp/js/myapp.js ?

设置.py

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_URL = '/static/'

标签: pythondjango

解决方案


来自Django 官方文档

默认值为STATICFILES_FINDERS

[
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

默认将查找存储在 STATICFILES_DIRS 设置(使用 django.contrib.staticfiles.finders.FileSystemFinder)和每个应用程序的静态子目录(使用 django.contrib.staticfiles.finders.AppDirectoriesFinder)中的文件。如果存在多个同名文件,将使用找到的第一个文件。

因此,在您的 中settings.py,添加以下内容:

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.FileSystemFinder',
]

基本上我们所做的是STATICFILES_FINDERS通过交换默认条目来覆盖,因此AppDirectoriesFinder首先使用它。


推荐阅读