web-dev-qa-db-ja.com

なぜmy Django管理サイトにcssスタイルがない

Django= Django開発バージョン =を使用して管理サイトを作成します

ただし、CSSスタイルはありません。

alt text

私に何ができる?

ありがとう

67
zjm1126

Djangoは、それ自体で静的ファイルを提供しません。ファイルの場所を指定する必要があります。

settings.pyのADMIN_MEDIA_PREFIX は、正しい場所でDjangoを指します。

開発バージョンを使用しているため、 静的ファイルの開発者固有のドキュメントhow-to が必要になります。 Adamのリンクから1.2バージョンにアクセスできます。

13
Evan Porter

STATIC_ROOTおよびSTATIC_URL、実行する必要がある場合があります

python manage.py collectstatic
54
David Mann

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で動作します。

16
Shamar

Django Book Tutorial。それらの前にハッシュ文字(#)を置きます。」 http://www.djangobook.com/en/2.0/chapter05.html

次に、第6章で、この6行のうち4行のコメントを外すように読者に指示します。

しかし、statcifiles行はCSSを管理ページに復元するために必要なものなので、 'Django.contrib.staticfiles'のコメントを外し、

9
Chris SH

私はこれを修正しようとするいくつかの他のスレッドを読みました...他のスレッドのようにエイリアスに再ソートされました。これは、独自のカスタムアプリが静的ファイルを正しく提供していることを前提としています。これは、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

これが誰かを助けることを願っています...このトピックにはたくさんのスレッドがあります。 :(

7
Taylor

/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つのオプションがあります。

  1. STATIC_ROOTとして設定したフォルダーをSTATICFILES_DIRSリストに追加します。これにより、Django=のstaticfilesファインダーがすべての静的ファイルを見つけることができます。
  2. 静的ファイルのフォルダー全体をファイルシステム上の別の場所に移動し、STATICFILES_DIRSに新しい場所を含めるように指示します。

この答えでセキュリティについてコメントすることはありません。これは、小さなプロジェクト用にWebサーバーで開発することができた方法です。 Django=何か大規模なことをしている場合は、提案するようにCDNが必要になると思います。

更新:私はこの問題に出くわしましたが、この方法はあなたが望むと思うことをまったくしませんでした。結局私のために働いたのは、collectstaticを実行した後です。STATICFILES_ROOTに入れた管理静的ファイルを、自分の静的ファイルに使用したディレクトリにコピーしただけです。これで問題は解決しました。

3
Brad P.

他の多くの回答が有用であることに加えて、まだ気付いていない問題がありました。 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/

そして今、私の管理サイトは正常に機能しています。

3
cod3monk3y

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

2
Gio

Apacheサーバーを使用してDjangoサイトをホストしている場合、静的エイリアスが/ directory to site/site_media/static /を指していることを確認する必要があります。静的ファイルが/ directoryにある場合site/site/site_media/static /に対して、以前のApacheエイリアス設定は機能しません。

2
Yulun

プロジェクトの新しい仮想環境を作成することで私の問題は解決しましたが、その前に一般的なシステムレベルpythonインタープリターを使用していました。

$ mkvirtualenv myproject

リファレンス: https://docs.djangoproject.com/en/2.1/howto/windows/

2
Khateeb321

確認しておいて 'Django.contrib.staticfiles'はあなたのINSTALLED_APPS your settings.py

1
RedRory

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)
1
Nikhil Saxena

Settings.pyにSTATICFILES_DIRSの値が設定されていて、宣言されたフォルダーが存在しないか、間違った場所にある場合、たとえばSTATICFILES_DIRS =(os.path.join(BASE_DIR、 "static"を定義することにより、 ))そして、静的フォルダは存在しません

0
cormacio100

問題が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/;
    }
    
0
SuperNova

数千の提案を試みた後、失敗し、最終的に助けになる解決策を見つけました。ここに私が試したものと私が使っていたものがあります。 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 %}" /> 

これで問題が解決しました。

0
Rahul Singal

実行: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>

これは確かに機能します!

0
Kundan roy