私はこれを見ました 質問 そしてDjangoプロジェクト ここ からの推薦ですが、それでもこれを機能させることができません。私のDjango管理ページにCSSがまったく表示されていません。
これが私の現在の構成です。
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/
にコピーしましたが、それでも機能しませんでした
Daniel Rosemanが提案したようにシンボリックリンクを修正することに加えて、Apacheを実行しているユーザーが管理メディアへの読み取りアクセス権を持っていることを確認する必要があります。
ls -l
を実行すると、シンボリックリンクが表示されますか?cd admin
した場合、それは機能しますか?次にls
を実行すると、管理メディアが表示されますか?これらすべてが機能する場合は、現在の構成とそれらのコマンドの結果で質問を更新してください。もう一度確認します。
更新への応答:わかりました、権限は問題ないように見えます。メディアディレクトリのディレクトリ構造が少し間違っているようです。
/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
次に、ダニエル・ローズマンの回答で提案されているように、シンボリックリンクを再作成します。
ここにはいくつかの問題があります。どちらもシンボリックリンクに関係しています。
まず、ソースとターゲットは逆である必要がありました(私はいつも自分でそれを間違えています)。
次に、Apacheconfで指定したパスとはまったく異なるパスを使用しました--djangotest/sgelections
vs Django/sgel
。
このようにしてください:
cd /home/Django/sgel/media/
ln -s /usr/lib/python2.6/site-packages/Django/contrib/admin/media/ admin
簡単な解決策は、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を正しく表示する最も簡単な方法。乾杯
私が見つけた別の方法で、適切にサポートされている方法のようです。
設定に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サービス用のプロジェクトフォルダーにコピーするだけのように見えます。
したがって、最初に実行したいのは、ディレクトリを静的フォルダに変更し、シンボリックリンクを追加することです。
私はこれを仮想環境で行ったので、
ln -s ~/virtualenv/my-virtualenv/lib/python2.x/site-packages/Django/contrib/admin/static/admin admin
次のステップは、httpd.confを編集することです
エイリアス/ static/admin /〜/ mysite/static/admin /
Apacheサーバーを再起動して出来上がり!
私は同じ問題を抱えていましたが、これはどれも本当に役に立ちませんでした。私のバージョンのグラッペリは時代遅れであることが判明しました。 ( https://github.com/sehmaschine/Django-grappelli )アンインストールしてから、新しいバージョンで再インストールしました。 pip install Django-grappelli==2.4.4
私のような管理スキンを使用している場合は、更新を検討してください。
Firebugで、[ネット]タブを使用して、ブラウザーによってcssファイルに対して行われている要求を確認します。そこにあなたの要求に対する応答自体を見てください。そこに問題があると思います。
最近同じ問題が発生しました。問題は、ブラウザがcssファイルを要求したときに、応答にプロジェクトのログインhtmlページのコンテンツが含まれていたことでした。どうやって問題を解決したのか今は覚えていません。ここで解決策を思い出して投稿しようと思います。
同じ問題が発生した場合はお知らせください。
追加してみてください
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>
以前は同じ問題がありましたが、FireFoxプラグインfirebugを使用して解決しました。これにより、サイトがメディアファイルを探している場所がわかります。また、admin/mediaフォルダーの内容をどのようにチェックして空かどうかを確認しました。 ?
走れますか
python
>>> import Django
>>> print Django.__file__
もう1つの質問-通常のメディアは/ home/Django/sgel/media /に配置されていますか(つまり、期待どおりにApacheによって提供されていますか?)
これが役立つかどうかはわかりませんが、設定ファイルには次のものがあります。
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>
動作しますが、サーバーを開発/テスト専用に設定しています。
私はそれが解決されたことを知っていますが、私の解決策を共有する価値があると思います。
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/
の値を設定してみましたか
MEDIA_ROOT MEDIA_URL ADMIN_MEDIA_PREFIX
正しく?
つまり、MEDIA_ROOTのURLとADMIN_MEDIA_PREFXの値は異なる必要があります。 settings.pyでこれらの値を確認して、再試行してください。
お役に立てれば。
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を使用していますが、これについてはまだ混乱しています。
Bitnami Django Stack on Win32(組み込み開発サーバー)の実行中に同じ問題が発生しました
インストールで不足しているCSSフォルダーを見つけ、settings.pyを変更することで、この問題を解決しました。
# Additional locations of static files
STATICFILES_DIRS = (
'C:/Program Files/BitNami DjangoStack/apps/Django/django/contrib',
)
これは開発を始めるのに役立ちます...それは最適ではありません。末尾のコンマを忘れないでください:)
何も役に立たない場合は、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とは無関係です
私のように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
を作業ディレクトリに置き換えます。 :)