MyApp/static/MyApp
ディレクトリがあります。
を実行する./manage.py collectstatic
と、MyAppディレクトリがにコピーされると思いますSTATIC_ROOT
が、そうではありません。
私も持っDownloadedApp/static/DownloadedApp
ていて、それをにコピーしましたSTATIC_ROOT fine
。
私は何が欠けていますか?
STATIC_ROOT
、、、STATICFILES_FINDERS
は何STATICFILES_DIRS
ですかsettings.py
?
がcollectstatic
実行されると、デフォルトSTATICFILES_FINDERS
値は、にあるdjango.contrib.staticfiles.finders.FileSystemFinder
すべてのパスから静的ファイルを収集しますSTATICFILES_DIRS
。
もう1つのデフォルトSTATICFILES_FINDERS
値は、内の任意のアプリdjango.contrib.staticfiles.finders.AppDirectoriesFinder
のフォルダーを検索します。/static/
INSTALLED_APPS
見つかったすべての静的ファイルは、指定されたSTATIC_ROOT
ディレクトリに配置されます。
collectstaticドキュメントへのこのリンクをチェックしてください
そして、このリンクは、settings.pyのさまざまな静的設定の説明です
を使用python manage.py findstatic
して、どのディレクトリcollectstatic
が検索されるかを確認することもできます。
それはちょうど私に起こりました、そして私は誤ってアプリの静的ファイルディレクトリを.gitignoreファイルに置きました。そのため、私のローカルマシンでは問題なく収集されましたが、本番環境では静的ファイルが実際に欠落していました(gitignored)。
これを実行して、命名規則を同じにします
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'assets')
静的ディレクトリには、プロジェクトアセット以外のすべてが含まれます
このコマンドを実行すると、アセットディレクトリが自動的に作成されます
python3 manage.py collectstatic
これにより、すべての静的フォルダーのコンテンツがアセットフォルダーにコピーされます
お役に立てれば :)
静的ファイルがコピーされるSTATIC_ROOTが欠落しているため、settings.pyにこの行を追加するだけです。
STATIC_ROOT=os.path.join(BASE_DIR,'staticfiles')
あなたのsettings.pyは次のようになります:
STATIC_URL = '/static/'
STATIC_ROOT=os.path.join(BASE_DIR,'staticfiles')
#manullyを追加
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
urls.pyにSTAIC_ROOTパスを追加することを忘れないでください
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path("" ,include("home.urls")),
]+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
それのすべての後、あなたは実行することができます:
python manage.py collectstatic
それはあなたのDirにあなたのためのstaticfilesフォルダを作成します
これは、特定の日付に発生するバグを調査しているときに、コンピューターの日付と時刻を変更したために発生しました。
したがって、それはcollectstaticのようなもの、そしてまた私のブラウザの履歴を邪魔しました。
コンピュータの日付と時刻を変更しないでください。
比較はコンテンツベースになるという印象を受けました。それは日付ベースであることが判明しました。したがって、。の後にファイルをいじらないでくださいcollecstatic
。
簡単な回避策の1つは、これで修正されたり、発生した理由を説明したりすることはできませんが、次のことです。
python manage.py collectstatic
すると、静的フォルダーに何も存在しないことがわかり、すべての静的ファイルがコピーされます。静的にすべてを適切に設定し、を使用している場合はnginx
、このコマンドを入力します
sudo nginx -t
error
静的ファイルが提供されない理由を確認し、その特定のエラーを修正します
私の場合、私は私の中で間違った道を与えましたnginx config
location /static {
root /home/ubuntu/myproject/app/static/;
}