web-dev-qa-db-ja.com

Django管理ページにCSSがありません

私はこれを見ました 質問 そしてDjangoプロジェクト ここ からの推薦ですが、それでもこれを機能させることができません。私のDjango管理ページにCSSがまったく表示されていません。

enter image description here

これが私の現在の構成です。

settings.py

ADMIN_MEDIA_PREFIX = '/media/admin/'

httpd.conf

<VirtualHost *:80>
    DocumentRoot /home/Django/sgel
    ServerName ec2-***-**-***-***.ap-**********-1.compute.amazonaws.com
    ErrorLog /home/Django/sgel/logs/Apache_error.log
    CustomLog /home/Django/sgel/logs/Apache_access.log combined
    WSGIScriptAlias / /home/Django/sgel/Apache/Django.wsgi

    <Directory /home/Django/sgel/media>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /home/Django/sgel/Apache>
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn

    Alias /media/ /home/Django/sgel/media/

</VirtualHost>

<VirtualHost *:80>
   ServerName sgel.com
   Redirect permanent / http://www.sgel.com/
</VirtualHost>

さらに、シンボリックリンクln -s /home/djangotest/sgel/media/admin/ /usr/lib/python2.6/site-packages/Django/contrib/admin/media/を作成するために、次のコマンドも実行しました(

[〜#〜]更新[〜#〜]

私のhttpd.confファイルでは、

User Django
Group Django

/mediaディレクトリでls-lを実行すると

drwxr-xr-x 2 root root 4096 Apr  4 11:03 admin
-rw-r--r-- 1 root root    9 Apr  8 09:02 test.txt

そのrootユーザーは代わりにDjangoである必要がありますか?

UPDATE 2ls -laフォルダに/media/adminを入力すると

total 12
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr  8 09:02 ..
lrwxrwxrwx 1 root root   60 Apr 13 03:33 media -> /usr/lib/python2.6/site-packages/Django/contrib/admin/media/

/usr/lib/python2.6/site-packages/Django/contrib/admin/media/に移動すると、フォルダが空でした。そのため、CSS、IMG、およびJSフォルダーをDjangoインストールから/usr/lib/python2.6/site-packages/Django/contrib/admin/media/にコピーしましたが、それでも機能しませんでした

23
super9

Daniel Rosemanが提案したようにシンボリックリンクを修正することに加えて、Apacheを実行しているユーザーが管理メディアへの読み取りアクセス権を持っていることを確認する必要があります。

  • メディアディレクトリでls -lを実行すると、シンボリックリンクが表示されますか?
  • メディアディレクトリからcd adminした場合、それは機能しますか?次にlsを実行すると、管理メディアが表示されますか?
  • Apacheを実行するユーザーは、管理メディアへの読み取りアクセス権を持っていますか?

これらすべてが機能する場合は、現在の構成とそれらのコマンドの結果で質問を更新してください。もう一度確認します。

更新への応答:わかりました、権限は問題ないように見えます。メディアディレクトリのディレクトリ構造が少し間違っているようです。

/usr/lib/python2.6/site-packages/Django/contrib/admin/media/が空だったという事実も気がかりです。差し迫った問題を解決したら、期待される場所に再インストールDjangoを検討することをお勧めします。

とにかく、構造は次のようになります。

$ cd media
$ ls -la
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr  8 09:02 ..
lrwxrwxrwx 1 root root   60 Apr 13 03:33 admin -> /usr/lib/python2.6/site-packages/Django/contrib/admin/media/
-rw-r--r-- 1 root root    9 Apr  8 09:02 test.txt

つまり、media/ディレクトリ内には、Djangoインストールの/admin/mediaディレクトリへのadminというリンクが直接含まれている必要があります。

持っているものを修正するには、media/admin/ディレクトリ内で次のコマンドを実行します。

rm media
cd ..
rmdir admin

次に、ダニエル・ローズマンの回答で提案されているように、シンボリックリンクを再作成します。

13
Sean W.

ここにはいくつかの問題があります。どちらもシンボリックリンクに関係しています。

まず、ソースとターゲットは逆である必要がありました(私はいつも自分でそれを間違えています)。

次に、Apacheconfで指定したパスとはまったく異なるパスを使用しました--djangotest/sgelections vs Django/sgel

このようにしてください:

cd /home/Django/sgel/media/
ln -s /usr/lib/python2.6/site-packages/Django/contrib/admin/media/ admin
7
Daniel Roseman

簡単な解決策は、wsgi.pyファイルの行を変更することです。

    from Django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

になります

    from Django.core.wsgi import get_wsgi_application
    from dj_static import Cling

    application = Cling(get_wsgi_application())

管理CSSを正しく表示する最も簡単な方法。乾杯

6
Adam

私が見つけた別の方法で、適切にサポートされている方法のようです。

設定にstaticfilesモジュールがあることを確認してください。また、STATIC_ROOTオプションを構成します。

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#module-Django.contrib.staticfiles

/ static /フォルダーを作成し、アクセス許可を設定します。

/ static /エイリアスを使用してApacheを設定します。

alias /static <path to project root>/static/
<Directory "<path to project root>/static/">
    Order deny,allow
    Allow from all
</Directory>

次に、プロジェクトフォルダから実行します

Sudo python manage.py collectstatic [-n to do a dry run]

これは、管理静的ファイルをWebサービス用のプロジェクトフォルダーにコピーするだけのように見えます。

4
niblitz

したがって、最初に実行したいのは、ディレクトリを静的フォルダに変更し、シンボリックリンクを追加することです。

私はこれを仮想環境で行ったので、

ln -s ~/virtualenv/my-virtualenv/lib/python2.x/site-packages/Django/contrib/admin/static/admin admin

次のステップは、httpd.confを編集することです

エイリアス/ static/admin /〜/ mysite/static/admin /

Apacheサーバーを再起動して出来上がり!

3
Domino_KOI

私は同じ問題を抱えていましたが、これはどれも本当に役に立ちませんでした。私のバージョンのグラッペリは時代遅れであることが判明しました。 ( https://github.com/sehmaschine/Django-grappelli )アンインストールしてから、新しいバージョンで再インストールしました。 pip install Django-grappelli==2.4.4私のような管理スキンを使用している場合は、更新を検討してください。

2
jason gotlieb

Firebugで、[ネット]タブを使用して、ブラウザーによってcssファイルに対して行われている要求を確認します。そこにあなたの要求に対する応答自体を見てください。そこに問題があると思います。
最近同じ問題が発生しました。問題は、ブラウザがcssファイルを要求したときに、応答にプロジェクトのログインhtmlページのコンテンツが含まれていたことでした。どうやって問題を解決したのか今は覚えていません。ここで解決策を思い出して投稿しようと思います。
同じ問題が発生した場合はお知らせください。

2
Arihant Nahata

追加してみてください

Options FollowSymLinks

あなたに

<Directory /home/Django/sgel/media>
    Order deny,allow
    Allow from all
</Directory>

あなたが

<Directory /home/Django/sgel/media>
    Options FollowSymLinks
    Order deny,allow
    Allow from all
</Directory>
1
skrat

以前は同じ問題がありましたが、FireFoxプラグインfirebugを使用して解決しました。これにより、サイトがメディアファイルを探している場所がわかります。また、admin/mediaフォルダーの内容をどのようにチェックして空かどうかを確認しました。 ?

1
Paulo

走れますか

python
>>> import Django
>>> print Django.__file__

もう1つの質問-通常のメディアは/ home/Django/sgel/media /に配置されていますか(つまり、期待どおりにApacheによって提供されていますか?)

1
Guard

これが役立つかどうかはわかりませんが、設定ファイルには次のものがあります。

    Alias /adminmedia/ /var/lib/python-support/python2.6/Django/contrib/admin/media/   

    <Directory "/var/lib/python-support/python2.6/Django/contrib/admin/media"> 
            AllowOverride None                                                 
            Options FollowSymLinks                                             
            Order allow,deny                                                   
            Allow from all                                                     
    </Directory>

動作しますが、サーバーを開発/テスト専用に設定しています。

1
James Khoury

私はそれが解決されたことを知っていますが、私の解決策を共有する価値があると思います。

Apacheにエイリアスを追加しただけで、これまでのところ機能しました。

    Alias /static/admin/ /usr/local/lib/python2.6/dist-packages/Django/contrib/admin/media/
    Alias admin/media/ /usr/local/lib/python2.6/dist-packages/Django/contrib/admin/media/
1
Fabricio Buzeto

の値を設定してみましたか

MEDIA_ROOT MEDIA_URL ADMIN_MEDIA_PREFIX

正しく?

つまり、MEDIA_ROOTのURLとADMIN_MEDIA_PREFXの値は異なる必要があります。 settings.pyでこれらの値を確認して、再試行してください。

お役に立てれば。

0
Mahendra Liya

djangoについて話したとき、どのエディションで実行されているかを知る必要があります。 「ADMIN_MEDIA_PREFIX」はDjango 1.4のエディション以前。

The included administration app Django.contrib.admin has for a long time 
shipped with a default set of static files such as JavaScript, images and 
stylesheets. Django 1.3 added a new contrib app Django.contrib.staticfiles 
to handle such files in a generic way and defined conventions for static 
files included in apps.
Starting in Django 1.4, the admin's static files also follow this convention, 
to make the files easier to deploy. In previous versions of Django, it was 
also common to define an ADMIN_MEDIA_PREFIX setting to point to the URL where 
the admin's static files live on a Web server. This setting has now been deprecated 
and replaced by the more general setting STATIC_URL. Django will now expect to 
find the admin static files under the URL <STATIC_URL>/admin/.

https://docs.djangoproject.com/en/dev/releases/1.4/ 。私はDjango 1.4を使用していますが、これについてはまだ混乱しています。

0
Nick Dong

Bitnami Django Stack on Win32(組み込み開発サーバー)の実行中に同じ問題が発生しました

インストールで不足しているCSSフォルダーを見つけ、settings.pyを変更することで、この問題を解決しました。

# Additional locations of static files
STATICFILES_DIRS = (
    'C:/Program Files/BitNami DjangoStack/apps/Django/django/contrib',
)

これは開発を始めるのに役立ちます...それは最適ではありません。末尾のコンマを忘れないでください:)

0
Amanjit Gill

何も役に立たない場合は、urls.pyに以下を追加してください

url(r'^media/(?P<path>.*)$', 'Django.views.static.serve', { <br/>
            'document_root': '/usr/lib/python2.4/site-packages/Django/contrib/admin/media/', <br/>
           'show_indexes' : True, <br/>
        }), <br/>

これはApacheまたはnginxとは無関係です

0
vsnu

私のようにvirtualenvwrapperを使用している場合、これが管理メディアファイルを見つけて修正する方法です。

workon <project_name>
export Django_BASEFILE=`python -c 'import Django; print Django.__file__'`
export Django_BASEDIR=$(dirname ${Django_BASEFILE})
ln -s $Django_BASEDIR/contrib/admin/media <project_dir>/media/admin

<project_name>をvirtualenvwrapper環境名に置き換え、project_dirを作業ディレクトリに置き換えます。 :)

0
nkh