Django在更改为生产设置并返回后无法找到我的静态文件

时间:2018-01-14 12:31:54

标签: python django

我本周末一直试图部署我的网站,因此一直在干预这些设置。这样做的一个令人不快的惊喜是我的静态文件似乎停止在我的网站上工作。我的CSS文件和javascript文件不再起作用,就像网站找不到它们一样。关于静态文件我唯一记得做的就是将它插入settings.py:

# The absolute path to the directory where collectstatic will collect static files for deployment.
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

# The URL to use when referring to static files (where they will be served from)
STATIC_URL = '/static/'

我删除了这些设置并将其替换为原始

STATIC_URL = '/static/'
但是,唉,问题仍然存在。为什么Django不再找到我的静态文件了?

PS:因为我是一个菜鸟,我不确切地知道我的项目中有什么相关内容供你们看,但请告诉我,我会提供更多信息。

1 个答案:

答案 0 :(得分:0)

好的,请更新您的settings.py,如下所示:

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static_my_proj"),
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "static_root")

现在,您已经完成了这项工作,将dir称为static_my_proj,与您的manage.py文件位于同一级别。

好的,现在创建一个名为static_cdn的新目录只需一级,即一级到manage.py档。

现在,在static_root内创建名为static_cdn的目录,这就是你所要做的。确保您运行python manage.py collectstatic

注:

static_my_proj用于开发,DEBUG = Truestatic_cdn用于制作或DEBUG = True。方便,对吗?

此外,您可以以相同的方式添加媒体文件,只需添加

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn", "media_root")

并在media_root下创建名为static_cdn的新目录。

修改

手动将所有admin个文件复制到静态目录。

如果你有virtualenv而不是转到<virtualenv-dir>/lib/python3.6/site-packages/django/contrib/admin/static并复制名为admin的目录。

即使DEBUG=False

也应该有效

希望这有帮助。