1. ホーム
  2. python

[解決済み] icon_clock.gif と icon_calender.gif のための django 静的管理画面 404

2022-02-16 23:23:22

質問

過去に1件、質問がありました。

Django と s3boto を使用すると、一部の管理用画像 (icon_clock.gif & icon_calendar.gif) が表示されないことがあります。

しかし、非常に時代遅れです(2013年)。私はUbuntu 14.04.3 LTSでdjango 1.9.1, apache, wsgiを動かしています。

最初に問題になったのは jquery ファイルが欠落していましたが collectstatic ( manage.py ) の中にある virtualenv はその問題を修正しました。しかし、2つの管理用メディアファイルはまだありません。404 URLの呼び出しは

http://example.com/missing-admin-media-prefix/img/icon_calendar.gif
http://example.com/missing-admin-media-prefix/img/icon_clock.gif

奇妙な URL のプレフィックスから、その問題に関連する非常に古い質問をいくつか見つけることができますが、django 1.9.1 では depreciated になっているようです。

私の settings.py はこのようになります。

STATIC_URL = '/static/'
#ADMIN_MEDIA_PREFIX = '/static/admin/'
#MEDIA_URL = "/media/"
#MEDIA_ROOT = "/home/user/app_root/media/"
STATIC_ROOT = "/home/user/app_root/static/"

コメントアウトされた行は、同じ問題に関連する古い質問で見つけた提案です(どれもうまくいきませんでした)。他の静的ファイルは、管理画面のものも含め、すべて正常に動作しています。

万策尽きた。

解決方法は?

django 1.9.1 でのこのエラーは、新しいバージョンには 'missing-admin-media-prefix' テキストがないので、古いバージョンの javascript ファイル 'django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js' が使用されていることを意味します。

シフトF5でページを再読み込みするか、ブラウザのキャッシュをクリアすればいいのかもしれません。

それでも解決しない場合は、ブラウザのコンソールで、なぜ古いバージョンのファイルが使用されているのかを確認してください。

コメント欄での議論から更新しました。

この問題は、古いバージョンの django が pip 経由でグローバルにインストールされていることが原因でした。この問題を解決するために、次のステップを実行しました。
1) グローバルにインストールされた旧バージョンのdjangoは、以下の方法で削除されました。 pip uninstall djangopip3 uninstall django (virtualenvの外)を使用します。
2) 静的ファイルを回収するには python manage.py collectstatic -c ここで -c は、既存のファイルをクリアするオプションです(virtualenvが有効な場合)。
3) ウェブサーバを再起動しました。