为什么collectstatic不会复制我的静态文件?

时间:2013-01-23 04:04:04

标签: django static

我有MyApp / static / MyApp目录

当我运行./manage.py collectstatic时,我希望将MyApp目录复制到STATIC_ROOT,但它不会

我也有DownloadedApp / static / DownloadedApp,并将其复制到STATIC_ROOT。

我错过了什么?

8 个答案:

答案 0 :(得分:15)

STATIC_ROOT中的STATICFILES_FINDERSSTATICFILES_DIRSsettings.py是什么?

运行collectstatic时,默认STATICFILES_FINDERSdjango.contrib.staticfiles.finders.FileSystemFinder将从STATICFILES_DIRS中的任何路径收集您的静态文件。

其他默认STATICFILES_FINDERSdjango.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)

一个快速的解决方法,尽管不能解决问题或解释其原因,但可以:

  1. 转到项目的文件目录并重命名项目的 将“静态”文件夹移至“静态旧”文件夹
  2. 在项目目录中创建一个名为“ static”的新的空文件夹
  3. 现在,如果您运行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 文件夹