Djangoは、それ自体で静的ファイルを提供しません。ファイルの場所を指定する必要があります。
settings.pyのADMIN_MEDIA_PREFIX は、正しい場所でDjangoを指します。
開発バージョンを使用しているため、 静的ファイルの開発者固有のドキュメントhow-to が必要になります。 Adamのリンクから1.2バージョンにアクセスできます。
STATIC_ROOT
およびSTATIC_URL
、実行する必要がある場合があります
python manage.py collectstatic
ADMIN_MEDIA_PREFIX
は非推奨になりました。STATIC_URL
代わりに。設定STATIC_URL = '/static/'
settings.pyの仕事をする必要があります。試してください:
import os.path import sys
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
その後:
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
Django 1.4 pre-alpha SVN-16920で動作します。
Django Book Tutorial。それらの前にハッシュ文字(#)を置きます。」 http://www.djangobook.com/en/2.0/chapter05.html
次に、第6章で、この6行のうち4行のコメントを外すように読者に指示します。
しかし、statcifiles行はCSSを管理ページに復元するために必要なものなので、 'Django.contrib.staticfiles'のコメントを外し、
私はこれを修正しようとするいくつかの他のスレッドを読みました...他のスレッドのようにエイリアスに再ソートされました。これは、独自のカスタムアプリが静的ファイルを正しく提供していることを前提としています。これは、STATIC_ROOTとSTATIC_URLに適切な設定があることを示します。
STATIC_ROOT = ''
STATIC_URL = '/static/'
次に(静的ディレクトリから):
ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ Sudo ln -s /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/admin/ admin
これが誰かを助けることを願っています...このトピックにはたくさんのスレッドがあります。 :(
/project_name/project_name/settings.py
で、STATIC_URL
を設定して、静的ファイルに使用するURLをサイトに通知する必要があります。
次に、STATIC_ROOT
を、STATICFILES_DIRS
リストにリストされているディレクトリとは異なるファイルシステム上のフォルダーに設定します。
STATICFILES_ROOT
が設定されたら、プロジェクトディレクトリからpython manage.py collectstatic
を実行します。
これにより、すべての管理静的ファイルと、STATICFILES_DIRS
リストにリストされている他のフォルダー内のすべてのファイルがコピーされます。基本的に、これによりすべての静的ファイルが1か所に配置されるため、サイトを展開するときにそれらをCDNに移動できます。あなたが私のような人で、CDNを持っていない場合、次の2つのオプションがあります。
STATIC_ROOT
として設定したフォルダーをSTATICFILES_DIRS
リストに追加します。これにより、Django=のstaticfilesファインダーがすべての静的ファイルを見つけることができます。STATICFILES_DIRS
に新しい場所を含めるように指示します。この答えでセキュリティについてコメントすることはありません。これは、小さなプロジェクト用にWebサーバーで開発することができた方法です。 Django=何か大規模なことをしている場合は、提案するようにCDNが必要になると思います。
更新:私はこの問題に出くわしましたが、この方法はあなたが望むと思うことをまったくしませんでした。結局私のために働いたのは、collectstatic
を実行した後です。STATICFILES_ROOT
に入れた管理静的ファイルを、自分の静的ファイルに使用したディレクトリにコピーしただけです。これで問題は解決しました。
他の多くの回答が有用であることに加えて、まだ気付いていない問題がありました。 Django 1.3から1.6にアップグレードした後、静的ファイルディレクトリにDjango admin静的ファイルへの壊れたシンボリックリンクがありました。
私のsettings.pyは以下で構成されました:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
この答え によると、
Djangoは、URL/admin /の下で管理静的ファイルを見つけることを期待します。
シンボリックリンクがありました/var/www/static/my-dev/admin
に設定された:
admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/media/
その場所はDjango 1.6には存在しないため、リンクを次のように更新しました。
admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/admin/
そして今、私の管理サイトは正常に機能しています。
Djangoチュートリアルに従いましたが、同様の問題がありました。私の場合、問題はcssファイルを提供するときに開発サーバーが使用するmimetypeでした。
提供されたMIMEタイプは「application/x-css」であり、Chrome(開発者ツールの[ネットワーク]タブ内)に次の警告メッセージが表示されました:
スタイルシートとして解釈されるが、MIMEタイプapplication/x-cssで転送されるリソース: " http://127.0.0.1:8000/static/admin/css/base.css "
私が見つけた回避策:Django webappのmanage.pyファイルに次の行を追加することにより、MIMEタイプを変更します。
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
注:Django 1.7.4 on Python 2.7 and Chrome 40.0
Apacheサーバーを使用してDjangoサイトをホストしている場合、静的エイリアスが/ directory to site/site_media/static /を指していることを確認する必要があります。静的ファイルが/ directoryにある場合site/site/site_media/static /に対して、以前のApacheエイリアス設定は機能しません。
プロジェクトの新しい仮想環境を作成することで私の問題は解決しましたが、その前に一般的なシステムレベルpythonインタープリターを使用していました。
$ mkvirtualenv myproject
リファレンス: https://docs.djangoproject.com/en/2.1/howto/windows/
確認しておいて 'Django.contrib.staticfiles'
はあなたのINSTALLED_APPS
your settings.py
Django-1.10.5およびpython-2.7.13でサイトを開発しているときに発生した同じ種類の問題。しかし、私のFirefox-51とChromeでは、ログインページはCSSを取得できましたが、それでもスタイリングはありませんでした。しかし、奇妙なことにIE-8で動作していました。
ここに記載されているすべての可能なことを試してみましたが、私のswバージョンのセットに適しています。動作しませんでした。
しかし、python-2.7.8を備えた他のシステムで同じサイトを試したところ、うまくいきました。
それが誰かを助けるかもしれないなら、ちょうど掲示されます...
編集:後でpython-2.7.13で、settings.pyに次の2行を書き込む(さらにブラウザーのキャッシュをクリアする)とトリックが行われることがわかりました
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Settings.pyにSTATICFILES_DIRSの値が設定されていて、宣言されたフォルダーが存在しないか、間違った場所にある場合、たとえばSTATICFILES_DIRS =(os.path.join(BASE_DIR、 "static"を定義することにより、 ))そして、静的フォルダは存在しません
問題がdev/test/prodサーバーにあり、Nginxを使用している場合、以下の手順に従ってください。
settings.pyの設定を以下のように設定します
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
以下のコマンドを実行して、静的フォルダーにcssおよびjsファイルを作成します
$ python manage.py collectstatic
静的ファイルを提供するための/ etc/nginx/sites-enabled/example(Nginx)の設定
location /static/ {
alias /project/root/folder/static/;
}
数千の提案を試みた後、失敗し、最終的に助けになる解決策を見つけました。ここに私が試したものと私が使っていたものがあります。 Django-1.11とnginx Webサーバーを使用しています。まず、CSS/jsファイルがブラウザーのコンソールで404にならないようにしました。その後、警告が表示されました
スタイルシートとして解釈されるが、MIMEタイプtext/plainで転送されるリソース
Adminテンプレートでbase.htmlを見つけて削除しました
type="text/css"
そして今、行は次のようになります:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
これで問題が解決しました。
実行:python manage.py collectstatic
/etc/Apache2/sites-available/000-default.confにあるVhostにこの行を追加します
エイリアス/ static/admin//var/www/html/example.com/static/admin
Django setupのVhost設定全体です。
<VirtualHost *:80>
ServerName gautam.tech
ServerAlias www.gautam.tech
WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
WSGIProcessGroup gautam.tech
#Your static files location
Alias /static /var/www/html/gautam.tech/static
Alias /media/ /var/www/html/gautam.tech/media
Alias /static/admin/ /var/www/html/gautam.tech/static/admin
<Directory /var/www/html/gautam.tech/static>
Require all granted
</Directory>
<Directory /var/www/html/gautam.tech/media>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py
DocumentRoot /var/www/html/gautam.tech
<Directory /var/www/html/gautam.tech>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/www/html/gautam.tech/access.log combined
ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>
これは確かに機能します!