我有一台运行在Ubuntu服务器上的django 1.4和grappelli 2.4.3,这个服务器在生产环境中可以通过Windowsnetworking系统查看。 当我在使用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
但pipe理网站显然只是部分呈现。 这绝对是拿起一些CSS,因为一些元素的样式。 但是它并没有吸引别人,因为它看起来很乱。 我的Nginx或Gunicorn错误日志都没有显示任何404s,如果我直接将浏览器指向它们,我可以下载所有的css和js文件。
目前pipe理网站在IE8和IE9中都是这样的:
关于该网站的其他一切运行良好。 Djangodebugging工具栏表示(工作)开发服务器版本和上面的生产版本呈现相同的模板。 当grappelli被移除时,正常的django admin会正常显示。 我试过改变我的Nginx conf文件
location /admin/media/ { root /path/to/django/contrib; }
至
location /admin/media/ { root /path/to/grappelli; }
没有变化。 谁能告诉我哪里出错了?
在黑暗中的另一个镜头:你偶然有不同的TEMPLATE_DIRS
设置在开发和生产? 看截图,这似乎不是一个静态文件的问题。 就像diegueus9已经指出的那样,grappelli css样式似乎被加载,但模板是来自股票的Django管理员。
检查静态媒体是在那里挑衅。
检查所有这些设置…
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', )
似乎Django 1.4.3引入了对Grappelli尚未设法遵循的管理静态文件的一些更改。 我没有花时间检查模板或静态文件级别本身是否是问题,但是我带来了一个解决方法。
你可以将你的Django设置降级到1.4.2,直到它被修复,或者像我一样,暂时禁用INSTALLED_APPS
'django.contrib.admin'
(只是注释该行或任何有效的行),运行collectstatic -c
然后再次启用管理员。 无论哪种方式,您将在Grappelli部署中拥有正确的样式。
我最好的客人没有看你的settings.py是你的应用程序“grappelli”是在 django的管理员之后安装的,而不是之前 。 在设置文档中查看该警告
很明显,你的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', )