当我访问我的 Django 应用程序的管理页面时,我注意到它们在地址中引用了 CSS,例如admin/css/base.css
. 但是,我注意到管理 css 文件实际上位于诸如media/css/base.css
.
因此,CSS 不会加载到我的管理页面中。为什么会这样?我试图在我的服务器上手动移动 CSS 文件以容纳管理页面 URL,但这是不可靠的,因为管理页面中引用的 CSS URL 是相对的(因此每个页面都会更改)。
当我访问我的 Django 应用程序的管理页面时,我注意到它们在地址中引用了 CSS,例如admin/css/base.css
. 但是,我注意到管理 css 文件实际上位于诸如media/css/base.css
.
因此,CSS 不会加载到我的管理页面中。为什么会这样?我试图在我的服务器上手动移动 CSS 文件以容纳管理页面 URL,但这是不可靠的,因为管理页面中引用的 CSS URL 是相对的(因此每个页面都会更改)。
注意 - 根据https://docs.djangoproject.com/en/dev/releases/1.4/#django-contrib-admin ,我之前的答案已被 Django 1.4 弃用
如果您使用的是 Django 1.4,只需将 STATIC_URL 设置指向适当的位置,例如
STATIC_URL = '/static/'
或者
STATIC_URL = 'https://bucket-name.s3.amazonaws.com/static/'
并且您的管理静态文件将自动放在 STATIC_URL+'admin/'。这可能就是您的管理文件在 /admin/css 中引用 css 的原因。问题是为什么实际文件位于 /media/css - 您是否手动上传它们?collectstatic 会把它们放在那里吗?尝试 collectstatic 并查看它是否将 admin/css 文件放在适当的位置,然后将其上传到服务器。
/static/admin/css 是管理 css 文件的默认位置。你的设置正确吗?
ADMIN_MEDIA_PREFIX = '/static/admin/'
当您使用
python manage.py collectstatic
命令。如果您将其更改为
ADMIN_MEDIA_PREFIX = '/static/media/'
我会假设 css 文件将被收集在 /static/media/css 中(尽管我没有对此进行测试)。
另外,为什么手动移动 css 文件不起作用?并不是说我会推荐它(应该使用 python manage.py collectstatic 将所有静态文件收集到一个统一的位置),但是如果您将它们移动到 /static/admin/css 这应该仍然是您的 CSS 文件所引用的, 正确的?
请注意,您也可以将 ADMIN_MEDIA_PREFIX 设为绝对值。我的设置为我的 s3 存储桶,例如
ADMIN_MEDIA_PREFIX = 'https://bucket-name.s3.amazonaws.com/static/admin/'