我在Ubuntu服务器上运行django 1.4和grappelli 2.4.3,我正在生产时通过Windows网络系统查看。当我在使用RDP的Ubuntu机器上查看它时,在开发服务器上一切正常。
settings.py的相关部分是:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), '../03_static_files/collected/')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__), '../03_static_files/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/admin/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/filebrowser/'),
os.path.join(os.path.dirname(__file__), '../03_static_files/grappelli/'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# apps I added but didn't create
'south',
'grappelli',
'filebrowser',
'tinymce',
'haystack',
'gunicorn',
'debug_toolbar',
'taggit',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
# apps I created
'community',
'fts',
'guidance',
'news',
)
我已经运行collectstatic
,但管理网站显然只是部分呈现。它肯定会拿起一些CSS,因为有些元素是样式化的。但它并没有吸引其他人,因为它看起来很混乱。我的Nginx或Gunicorn错误日志都没有显示任何404,如果我直接将浏览器指向它们,我可以下载所有的css和js文件。
管理站点目前在IE8和IE9中都是这样的:
该网站的其他所有内容都运行良好。 Django调试工具栏说(工作)开发服务器版本和上面的生产版本呈现相同的模板。删除grappelli时,正常的django admin会正常显示。我试过从
更改我的Nginx配置文件location /admin/media/ {
root /path/to/django/contrib;
}
到
location /admin/media/ {
root /path/to/grappelli;
}
没有变化。谁能告诉我哪里出错了?
答案 0 :(得分:2)
在那里检查静态媒体。
检查所有这些设置......
STATIC_URL = '/static/'
STATIC_ROOT is something like os.path.join(PROJECT_PATH, "static"),
ADMIN_MEDIA_PREFIX = '/static/grappelli/' (or whatever your static directory is)
接下来检查你的
DEBUG = False or True ?
TEMPLATE_DEBUG = DEBUG
如果为false,它将使用nginx提供文件,而不会
另一个例子......
STATIC_URL = '/static/'
STATIC_ROOT = '/home/foo/devel/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/foo/devel/media'
# the following is deprecated but is it seems grappelly requires it
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
STATIC_FILES = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
答案 1 :(得分:2)
黑暗中的另一个镜头:您是否偶然在开发和制作中有TEMPLATE_DIRS
个不同的设置?查看屏幕截图,这似乎不是静态文件的问题。就像diegueus9已经指出的那样,grappelli css样式似乎已经加载了,但模板是来自Django admin的库存。
答案 2 :(得分:1)
似乎Django 1.4.3对他们的管理静态文件进行了一些更改,而Grappelli还没有遵循这些更改。我没有花时间检查模板或静态文件级别本身是否存在问题,但我找到了解决方法。
您可以将Django设置降级到1.4.2直到修复它们,或者像我一样,暂时禁用'django.contrib.admin'
中的INSTALLED_APPS
(只需将该行或任何内容评为有效),运行collectstatic -c
然后再次启用admin。无论哪种方式,Grappelli部署都会有正确的样式。
答案 3 :(得分:0)
我没有看你的settings.py的最好的客人是你的应用程序“grappelli”在 django的管理员之后安装而不是之前的。在setup doc
中查看该警告显然你的css和js是正确的,但是因为你的应用程序正在呈现django.contrib.admin的模板而没有很好地渲染。
请确保将grappelli放在:
之前INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'grappelli',
'django.contrib.admin',
)