1

我有一个项目已经运行了大约 6 个月。静态文件一直运行良好,一切都很好。我的static文件位于一个文件夹中,如下所示:

/var/www/html/static/

在我的settings.py文件中,我有这样的静态部分设置:

STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "static"),
     '/var/www/html/static/',
     )

这一直工作得很好。

但是,我现在想将static文件夹移动到其他位置。具体来说,我想将它移动到主项目目录中。我的项目位于,/var/www/html/shq/所以我希望我的static目录位于/var/www/html/shq/static/. 我移动了文件夹,然后将文件更新settings.py为如下所示:

STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "static"),
     '/var/www/html/shq/static/',
     )

但是,它没有用。Django 项目仍在引用旧位置。

我在这里想念什么?为什么 Django 项目不使用 的新位置/var/www/html/shq/static/

编辑

这是我文件的尾部的settings.py样子:

119 STATICFILES_FINDERS = [
120   'django.contrib.staticfiles.finders.FileSystemFinder',
121   'django.contrib.staticfiles.finders.AppDirectoriesFinder',
122 ]
123
124 STATIC_URL = '/static/'
125 STATIC_ROOT = '/var/www/html/collected_static/'
126 MEDIA_URL = '/media/'
127 MEDIA_ROOT = '/var/www/html/shq/media/'
128 STATICFILES_DIRS = [
129     os.path.join(BASE_DIR, "static"),
130     '/var/www/html/shq/static/',
131     ]
4

2 回答 2

0

你可以尝试做这样的事情。我认为它返回 django 查找静态文件的目录列表。可能有助于调试。

from django.contrib.staticfiles import finders
from pprint import pprint
pprint(finders.find("", all=True))

此外,我可能不完全理解您的情况,但您可能会确认 STATIC_ROOT 设置为您要提供静态文件的位置(您的网络服务器将提供文件的位置)。STATIC_DIRS 设置告诉 collectstatic 在哪里可以找到静态文件,但 STATIC_ROOT 是 collectstatic 实际放置文件的位置。

于 2016-06-15T02:08:23.337 回答
0

我想到了。毫不奇怪,一旦我弄清楚了,这很容易解决。

它与我的 Django 设置无关,与 Apache 无关。

原来的

Alias /static/ /var/www/html/static/

因此,无论我在 Djangosettings.py文件中做了什么,Apache 都会覆盖它以将/static/请求发送到错误的目录。

新的 Apache 设置

Alias /static/ /var/www/html/shq/static/

现在正在引用正确的静态文件。希望这对将来的其他人有所帮助:)

于 2016-06-15T02:41:43.463 回答