19

我有一个MyApp/static/MyApp目录。

当我运行时./manage.py collectstatic,我希望将 MyApp 目录复制到STATIC_ROOT,但事实并非如此。

我也有DownloadedApp/static/DownloadedApp,它复制到STATIC_ROOT fine.

我错过了什么?

4

8 回答 8

29

你的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目录中。

查看此链接到 collectstatic 文档

这个链接解释了settings.py中的各种静态设置

您还可以使用python manage.py findstatic来查看将查看哪些目录collectstatic

于 2013-01-23T04:35:40.220 回答
4

这只是发生在我身上,我不小心将应用程序的静态文件目录放在了 .gitignore 文件中。所以在我的本地机器上收集得很好,但在生产中静态文件实际上丢失了(gitignored)。

于 2015-01-13T16:03:23.500 回答
4

只需这样做并使命名约定相同

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

静态目录包含您的所有项目资产

当您运行此 cmd 时,资产目录将自动创建

python3 manage.py collectstatic

这会将所有静态文件夹内容复制到资产文件夹中

希望这可以帮助 :)

于 2019-08-07T07:14:23.837 回答
1

您缺少将要复制静态文件的 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

它将在您的目录中为您创建一个静态文件文件夹

于 2021-06-02T00:05:47.457 回答
0

我的印象是比较将基于内容。结果证明是基于日期的。所以,不要在collecstatic.

于 2018-05-07T22:55:44.283 回答
0

如果您已经为静态正确设置了所有内容并且正在使用,请nginx输入此命令

sudo nginx -t

您将看到error为什么您的静态文件没有被提供并修复该特定错误

就我而言,我给出了错误的路径nginx config

location /static {
        root /home/ubuntu/myproject/app/static/;
    }
于 2021-01-18T20:03:33.353 回答
0

这发生在我身上,因为在调查某些日期发生的错误时,更改了我的计算机日期和时间。

因此,它扰乱了诸如 collectstatic 之类的东西,以及我的浏览器历史记录。

不要更改您的计算机日期和时间。

于 2016-10-03T15:16:33.317 回答
0

一个快速的解决方法是:

  1. 转到项目的文件目录并将项目的“静态”文件夹重命名为“静态旧”之类的其他名称
  2. 在项目目录中创建一个名为“static”的新空文件夹
  3. 现在,如果您运行python manage.py collectstatic它,它将看到您的静态文件夹中没有任何内容,并将复制所有静态文件。
于 2019-02-01T20:48:09.430 回答