Django Admin Page缺少CSS

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,你能看到管理媒体吗?
  • 运行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
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的回答中的建议重新创建符号链接.


Dan*_*man 7

这里有几个问题,都与你的符号链接有关.

首先,源和目标需要反过来(我总是自己错了).

其次,你使用了一个完全不同的路径到你在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)


Ada*_*dam 6

简单的解决方案是更改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正确显示的最简单方法.干杯


nib*_*itz 5

我刚刚找到的另一种方法,它看起来像是一个得到适当支持的方法。

确保您的设置中有 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 服务。