【问题标题】:Django 3.2.8: 0 static files copied to '/static'Django 3.2.8:0 个静态文件复制到“/static”
【发布时间】:2022-01-25 02:00:19
【问题描述】:

执行命令python manage.py collectstatic时出现此错误:

0 个静态文件复制到“/home/project”。

这意味着没有任何更改,并且我的静态文件已经存在于目标中,但在此文件夹中只有一个文件:

static/
      - staticfiles.json

但我希望面板管理员的所有 CSS、js、HTML 都在其中。

Django 设置:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "/static/")

STATICFILES_DIRS = (
    STATIC_ROOT,
) 

urls.py

...
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我也试过这些12,但没有找到结果。

【问题讨论】:

  • STATICFILES_DIRS 不应包含STATIC_ROOT,当您尝试运行collectstatic 时,您不会收到错误提示吗?
  • @IainShelvington 编号输出为0 static files copied to '/static'.
  • 你从python manage.py version得到什么输出?您应该从 STATIC_ROOT 的连接中删除前导斜杠,否则您从文件系统的根目录将其设置为“/static”:STATIC_ROOT = os.path.join(BASE_DIR, "static")
  • 您好@Saeed 尝试将您的STATICFILES_DIRS 转换为列表而不是元组我知道这很奇怪,但是当您运行python manage.py collectstatic 时,它会给您根目录的路径,而不是它应该给您的路径STATIC_ROOT 例如。 0 static files copied to '/home/project/static'.
  • @AnkitTiwari 谢谢你的回答。你是对的。我的一些设置在其他地方有误。

标签: django django-admin collectstatic django-static


【解决方案1】:

settings.py

import os
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')

urls.py

urlpatterns = [
    path('demo/',Demo.as_view(),name='demo')
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.STATIC_ROOT)

在文件夹中添加您的文件- 静态->demo_folder->staticfiles.json

python3 manage.py 收集静态

【讨论】:

  • 如果您的 settings.py 文件中没有 STATICFILES_DIRS,django 将不会抓取您的静态资产。顺便说一句,应该是collectstatic 而不是collecstatic
  • 感谢您提供宝贵的信息...在这一些拼写错误......!!谢谢
【解决方案2】:

使用STATICFILES_DIRS 定义所有路径,Django 将在其中查找静态文件。 例如:

STATICFILES_DIRS = [os.path.join(BASE_DIR, "templates/staticfiles")]

当你运行collectstatic 时,Django 会将你所有路径中的所有找到的文件从STATICFILES_DIRS 复制到STATIC_ROOT

在您的情况下,Django 会将所有文件复制到:

STATIC_ROOT = os.path.join(BASE_DIR, "/static/")

之后,您的静态文件可以通过您定义的STATIC_URL URL 访问。在你的情况下:

STATIC_URL = '/static/'

【讨论】:

  • 感谢您的详细解答。我的一些设置在其他地方是错误的。 ‌但我从你的回答中学到了。
猜你喜欢
  • 2014-07-30
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多