sup*_*er9 22 css python django django-admin
我看到这个问题从Django的项目和建议,在这里,但仍不能得到这个工作.我的Django Admin页面根本没有显示CSS.

这是我目前的配置.
settings.py
ADMIN_MEDIA_PREFIX = '/media/admin/'
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
另外,我还运行以下内容来创建(我认为)符号链接
ln -s /home/djangotest/sgel/media/admin/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/
UPDATE
在我的httpd.conf文件中,
User django
Group django
Run Code Online (Sandbox Code Playgroud)
当我在我的/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
Run Code Online (Sandbox Code Playgroud)
那个root用户应该是django吗?
更新2
当我进入ls -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/
Run Code Online (Sandbox Code Playgroud)
问题是,当我导航到时/usr/lib/python2.6/site-packages/django/contrib/admin/media/,文件夹是空的.所以我从我的Django安装中复制了CSS,IMG和JS文件夹/usr/lib/python2.6/site-packages/django/contrib/admin/media/,但仍然没有用
Sea*_* W. 13
除了纠正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
Run Code Online (Sandbox Code Playgroud)
也就是说,在media/目录内部,它们应该是一个admin直接调用/admin/mediadjango安装目录的链接.
要修复你所拥有的内容,请media/admin/运行目录:
rm media
cd ..
rmdir admin
Run Code Online (Sandbox Code Playgroud)
然后按照Daniel Roseman的回答中的建议重新创建符号链接.
这里有几个问题,都与你的符号链接有关.
首先,源和目标需要反过来(我总是自己错了).
其次,你使用了一个完全不同的路径到你在Apache conf- djangotest/sgelectionsvs中指定的路径django/sgel.
像这样做:
cd /home/django/sgel/media/
ln -s /usr/lib/python2.6/site-packages/django/contrib/admin/media/ admin
Run Code Online (Sandbox Code Playgroud)
简单的解决方案是更改wsgi.py文件中的一行
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
变
from django.core.wsgi import get_wsgi_application
from dj_static import Cling
application = Cling(get_wsgi_application())
Run Code Online (Sandbox Code Playgroud)
让Admin 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>
Run Code Online (Sandbox Code Playgroud)
然后从您的项目文件夹运行
sudo python manage.py collectstatic [-n to do a dry run]
Run Code Online (Sandbox Code Playgroud)
所有这些看起来就像是将管理静态文件复制到您的项目文件夹以供 Web 服务。