我有MyApp / static / MyApp目录
当我运行./manage.py collectstatic时,我希望将MyApp目录复制到STATIC_ROOT,但它不会
我也有DownloadedApp / static / DownloadedApp,并将其复制到STATIC_ROOT。
我错过了什么?
答案 0 :(得分:15)
STATIC_ROOT
中的STATICFILES_FINDERS
,STATICFILES_DIRS
和settings.py
是什么?
运行collectstatic
时,默认STATICFILES_FINDERS
值django.contrib.staticfiles.finders.FileSystemFinder
将从STATICFILES_DIRS
中的任何路径收集您的静态文件。
其他默认STATICFILES_FINDERS
值django.contrib.staticfiles.finders.AppDirectoriesFinder
会显示在/static/
中任意应用的INSTALLED_APPS
文件夹中。
找到的所有静态文件都将放在指定的STATIC_ROOT
目录中。
Check out this link to the collectstatic docs
And this link an explanation of the various static settings in settings.py
您还可以使用python manage.py findstatic
查看collectstatic
将查看哪些目录。
答案 1 :(得分:5)
这恰好发生在我身上,我不小心将应用程序的静态文件目录放在.gitignore文件中。所以在我的本地机器上它收集得很好,但在生产中静态文件实际上已经丢失(gitignored)。
答案 2 :(得分:0)
这件事发生在我身上,因为在调查某些日期发生的错误时,更改了我的计算机日期和时间。
因此它扰乱了诸如collectstatic之类的事情,以及我的浏览器历史记录。
请勿更改计算机的日期和时间。
答案 3 :(得分:0)
我认为比较是基于内容的。原来是基于日期的。因此,请勿在{{1}}之后弄乱您的文件。
答案 4 :(得分:0)
一个快速的解决方法,尽管不能解决问题或解释其原因,但可以:
python manage.py collectstatic
,它将看不到任何内容
在您的静态文件夹中,并将所有静态文件复制过来。答案 5 :(得分:0)
做到这一点并使命名约定相同
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
静态目录包含所有项目资产
当您运行此cmd时,资产目录将自动创建
python3 manage.py collectstatic
这会将所有静态文件夹内容复制到资产文件夹
希望这会有所帮助:)
答案 6 :(得分:0)
如果您已为静态正确设置了所有内容并且您正在使用 HTTP 200
,请输入此命令
nginx
您将看到 sudo nginx -t
为什么您的静态文件没有被提供并修复该特定错误
就我而言,我在 error
nginx config
答案 7 :(得分:0)
您缺少静态文件将被复制的 STATIC_ROOT 在 settings.py 中添加这一行
STATIC_ROOT=os.path.join(BASE_DIR,'staticfiles')
你的 settings.py 看起来像这样:
STATIC_URL = '/static/'
STATIC_ROOT=os.path.join(BASE_DIR,'staticfiles')
#已添加手动
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
记得在 urls.py 中添加 STAIC_ROOT 路径
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path("" ,include("home.urls")),
]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
毕竟你可以运行:
python manage.py collectstatic
它会在你的目录中为你创建一个 staticfiles 文件夹