django:管理站点未格式化

时间:2011-08-08 15:38:32

标签: python django django-admin gunicorn

我有一个基本上完全简单的django项目,没有添加我自己的媒体或以任何方式定制管理界面。使用python manage.py runserver运行服务器会生成格式良好的管理界面。使用gunicorn_django运行服务器不会。为什么会这样,我该如何解决?

这绝对是一个找不到css文件的问题,但它们存储在哪里?我从未对此进行过配置,MEDIA_ROOT设置为''

编辑:我只是想知道django-admin如何为不存在的管理文件提供服务......我怎样才能让gunicorn_django做同样的事情?

5 个答案:

答案 0 :(得分:1)

如果使用contrib.static,则必须执行collectstatic命令以将所有特定于应用程序的静态文件(包括管理员自己的文件)放入gunicorn提供的公共目录中。

答案 1 :(得分:1)

我也遇到过这个问题(因为我针对gunicorn进行了一些开发),这里是如何通过urls.py删除admin-media魔术并像其他任何媒体一样提供管理媒体:

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>

答案 2 :(得分:1)

我认为最简单的方法是为nginx添加别名(你使用的是一个?!)配置文件:

location /static/admin/ {
    alias /<path_to_your_admin_static_files>/;
}

它立刻为我工作

答案 3 :(得分:0)

好的,明白了。只需将此行添加到settings.py

MEDIA_ROOT = '/home/claudiu/server/.virtualenv/lib/python2.5/site-packages/django/contrib/admin/media/'

答案 4 :(得分:0)

对于我的安装,David Wolever的答案很接近,但我认为新的django可能会改变一些路径。特别是我设置

admin_media_path = os.path.join(django.__path__[0], 'contrib', 'admin', 'static', 'admin')

并在urlpatterns中添加:

url(r'^static/admin/(?P<path>.*)$', 'django.views.static.serve', {
        'document_root': admin_media_path,
    }),

基于此处的信息:https://docs.djangoproject.com/en/dev/howto/static-files/

对我有用,但比我喜欢的更“神奇”。