为什么我的Django应用程序中的管理页面没有引用正确的CSS URL?

时间:2012-07-29 04:14:42

标签: django django-admin

当我访问我的Django应用程序的管理页面时,我注意到它们在admin/css/base.css等地址引用了CSS。但是,我注意到admin css文件实际上位于media/css/base.css等地址。

因此,我的管理页面中没有加载CSS。为什么会这样?我试图在我的服务器上手动移动CSS文件以容纳管理页面URL,但这是不可靠的,因为管理页面中引用的CSS URL是相对的(因此每个页面都会更改)。

1 个答案:

答案 0 :(得分:0)

注意 - 根据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是admin css文件的默认位置。你的设置是否正确?

ADMIN_MEDIA_PREFIX = '/static/admin/'

以上会导致您的admin css文件在使用

时被收集到/ static / admin / css
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/'