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 の設定とは何の関係もなく、すべて Apache と関係がありました。

オリジナル

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

settings.pyしたがって、Djangoファイルで何を行っても、Apache はそれをオーバーライドして、/static/リクエストを間違ったディレクトリに送信していました。

新しい Apache 設定

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

現在、適切な静的ファイルが参照されています。うまくいけば、これは将来誰かに役立つでしょう:)

于 2016-06-15T02:41:43.463 に答える
0

このようなことをしてみるとよいでしょう。静的ファイルを見つけるためにdjangoが探すディレクトリのリストを返すと思います。デバッグに役立つかもしれません。

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

また、私はあなたのシナリオを完全には理解していないかもしれませんが、STATIC_ROOT が静的ファイルを提供する場所 (Web サーバーがファイルを提供する場所) に設定されていることを確認してください。STATIC_DIRS 設定は、静的ファイルを見つける場所を collectstatic に指示しますが、STATIC_ROOT は、collectstatic が実際にファイルを配置する場所です。

于 2016-06-15T02:08:23.337 に答える