当我访问我的Django应用程序的管理页面时,我注意到它们在admin/css/base.css
等地址引用了CSS。但是,我注意到admin css文件实际上位于media/css/base.css
等地址。
因此,我的管理页面中没有加载CSS。为什么会这样?我试图在我的服务器上手动移动CSS文件以容纳管理页面URL,但这是不可靠的,因为管理页面中引用的CSS URL是相对的(因此每个页面都会更改)。
答案 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 / csspython 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/'