django:管理站点未格式化
我有一个几乎完全普通的 Django 项目,没有添加任何自己的媒体文件,也没有对管理界面进行任何自定义。用 python manage.py runserver
启动服务器时,管理界面看起来很不错。但用 gunicorn_django
启动服务器时,就不一样了。为什么会这样,我该怎么解决呢?
这肯定是找不到 css
文件的问题,但这些文件到底存在哪里呢?我从来没有配置过这个,而 MEDIA_ROOT
的设置是 ''
。
补充:我只是想知道 Django 的管理界面是怎么处理那些不存在的管理文件的……我该怎么让 gunicorn_django 也做到这一点呢?
5 个回答
1
我觉得最简单的方法就是在nginx的配置文件里添加一个别名(你在用nginx吗?):
location /static/admin/ {
alias /<path_to_your_admin_static_files>/;
}
对我来说,这样做立刻就有效了。
1
我也遇到过这个问题(因为我在使用gunicorn进行开发),下面是如何去掉admin-media的特殊处理,并通过urls.py像处理其他媒体文件一样来提供admin媒体的方法:
import os
import django
...
admin_media_url = settings.ADMIN_MEDIA_PREFIX.lstrip('/') + '(?P<path>.*)$'
admin_media_path = os.path.join(django.__path__[0], 'contrib', 'admin', 'media')
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^' + admin_media_url , 'django.views.static.serve', {
'document_root': admin_media_path,
}, name='admin-media'),
...
)
另外:http://djangosnippets.org/snippets/2547/
当然,还有 #include <production_disclaimer.h>
。
1
如果你使用了contrib.static这个工具,你需要运行一个叫做collectstatic
的命令。这个命令的作用是把所有应用程序相关的静态文件(包括管理员自己用的文件)都放到一个公共目录里,这样gunicorn就可以提供这些文件了。