Django Admin不工作/丑陋 - 与nginx和gunicorn一起服务

时间:2013-11-24 21:16:17

标签: django nginx admin

我在Ubuntu EC2实例上运行nginx,gunicorn,django。整个网站运作良好。除了管理员。管理员无法正常显示。我运行了“python manage.py collectstatic”并编辑了STATIC_ROOT和STATIC_URL。当我加载管理页面时,它很难看,但当我检查源代码时,CSS文件位于它们应该是

<title>Site administration | Django site admin</title> 
<link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="http://staticfiles.mydomain.com/static/admin/css/dashboard.css" />

我可以查看nginx access.log并查看文件是否被请求和传递,但页面无法正常显示。这就像文件正在接收但未处理。错误日志是干净的。

解决

在Chrome开发者工具的控制台标签下,我注意到以下内容:

Resource interpreted as Script but transferred with MIME type text/plain: "http://staticfiles.<mydomain>.com/static/admin/js/jquery.min.js". 

因此文件被传送到浏览器,但它不知道如何处理它们。要修复它,我必须编辑nginx.conf并指定几个目录的默认类型......

location /static/admin/js/ {
  default_type text/javascript;
  alias /home/ubuntu/webapps/<myproject>/static/admin/js/;
}

location /static/admin/css/ {
  default_type text/css;
  alias /home/ubuntu/webapps/<myproject>/static/admin/css/;  
}

修正了它; django管理员加载样式表和javascript文件,并正常运行。我希望这有助于其他人。

2 个答案:

答案 0 :(得分:1)

我的解决方案;

1.step

settings.py编辑

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
STATIC_ROOT = "/opt/venv/myDjangoProject/static/"
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
)
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)

2.step

在终端运行collesctstatic:)

python manage.py collectstatic

答案 1 :(得分:0)

解决此问题的正确方法是在nginx配置文件的include /etc/nginx/mime.types;部分添加http