2011-08-08 99 views
3

我有一个大多完全纯粹的Django项目,没有添加我自己的媒体或以任何方式定制管理界面。使用python manage.py runserver运行服务器会生成一个格式良好的管理界面。使用gunicorn_django运行服务器不会。为什么会出现这种情况,我该如何解决?django:管理网站没有格式化

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

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

+0

为什么downvote?我应该换上serverfault吗?我几乎不是管理员,这只是我的项目。超级用户?这似乎不合适 – Claudiu

+0

与此问题相同:http://stackoverflow.com/questions/3032519/why-cant-django-find-my-admin-media-files-once-i-leave-the-built- in-runserver –

+2

我认为这是一个downvoted,因为这是一个非常基本的问题,即RTFM的边界。这是一个人们面临的问题,但Django文档和教程在这个主题上非常明确:https://docs.djangoproject.com/en/dev/howto/static-files/ –

回答

1

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

+0

我有django 1.2 ...我在哪里可以得到django管理静态文件? – Claudiu

+0

打开shell,加载任何django包并打印它的'__file__'属性,它将显示文件的实际路径。看看那里和符号链接到服务的媒体。 – rewritten

0

好吧,明白了。刚把这一行添加到settings.py

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

使用此解决方案,您不会为管理员媒体提供其他任何服务...... django 1.2文档中推荐的方法(https://docs.djangoproject.com/en/1.2//howto/deployment/modpython/#serving -the-admin-files)将管理媒体链接到由服务器提供的文档根目录中。在你的情况下,它将'MEDIA_ROOT ='/ var/media''和symlinking'... django/contrib/admin/media/admin'设置为 – rewritten

+0

@saverio:我将如何区分管理媒体和媒体?如果我建立一个符号链接,它看起来不像'/ var/media/admin',如果media_root是'/ var/media',它不会找到它们? – Claudiu

+0

管理媒体由'/ var/media/admin'提供,其余来自'/ var/media'。如果您使用django auth应用程序作为媒体根目录,您将失去为其他媒体提供服务的能力。 – rewritten

1

我碰到的这个问题太(因为我做对gunicorn一些开发),和这里的如何删除管理媒体魔术和服务管理媒体,如任何通过urls.py其他媒体:

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>

0

对于我的安装,David Wolever的回答很接近,但我认为有些路径可能在更新的django中发生了变化。特别是我设置

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

和URL模式补充说:

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

根据这里找到的信息:https://docs.djangoproject.com/en/dev/howto/static-files/

对我的作品,但更多的 “神奇” 不是我喜欢的。

1

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

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

它会立即为我工作