Django没有更新静态位置设置

时间:2016-06-14 22:37:26

标签: django django-staticfiles django-static

我有一个项目已经运行了大约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     ]

2 个答案:

答案 0 :(得分:0)

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

<ion-checkbox ng-disabled="myBooleanValue" 
              ng-repeat="va in q.ValidAnswers | orderBy:'SortOrder'" 
              ng-click="myBooleanValue || vm.setAnswer(q.ID, va.AnswerID)"
              ng-checked="vm.isChecked(currentAnswers, va.AnswerID)">
   {{va.Text}}
</ion-checkbox>

另外,我可能不完全了解您的方案,但您可能确认STATIC_ROOT设置为您要为静态文件提供服务的位置(您的Web服务器将为文件提供服务)。 STATIC_DIRS设置告诉collectstatic在哪里找到静态文件,但是STATIC_ROOT是collectstatic实际放置文件的地方。

答案 1 :(得分:0)

我明白了。毫不奇怪,一旦我弄清楚这是一个简单的解决方案。

它没有没有来处理我的Django设置以及与Apache有关的一切。

<强>原始

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

所以无论我在Django settings.py文件中做了什么,Apache都要求将/static/请求发送到错误的目录。

新的Apache设置

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

现在正在引用正确的静态文件。希望这有助于未来的其他人:)