内置管理站点的Django样式表未加载到运行Django 1.6的生产服务器上。我可以看到许多其他人都遇到了此问题,并且我尝试了已提供给他们的所有解决方案,但都无济于事。我的Django网站在Nginx 1.2.1代理之后的Gunicorn 19.1.1之上运行。
由于我将要构建一个仪表板,并且除了管理用户,组和模型之外,还将使用管理网站做更多的事情,所以我在网站内部创建了一个“管理”应用程序:
INSTALLED_APPS += ('apps.admin', )
我覆盖并扩展了Django的一些管理模板,并在此处从django.contrib.admin.templates复制了它们:
/www/site/apps/admin/__init__.py
/www/site/apps/admin/models.py
/www/site/apps/admin/views.py
/www/site/apps/admin/urls.py
/www/example/apps/admin/templates/admin/base.html
/www/example/apps/admin/templates/admin/base_site.html
/www/example/apps/admin/templates/admin/index.html
/www/example/apps/admin/templates/admin/my_dashboard.html # mine
这是我的urls.py文件中的相关设置
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# ...
url(r'^admin/', include(admin.site.urls)),
url(r'^admin/dashboard/$',
'apps.admin.views.dashboard',
{'template': 'my_dashboard.html'},
name='dashboard'),
)
这是我的设置。我网站的实际静态文件位于此处:
/www/example/static/css
/www/example/static/js
这是我的静态根。Django文档说,它应该与静态文件的实际位置不同。
STATIC_ROOT = "/var/www/example/static/"
我的静态网址的前缀:
STATIC_URL = '/static/'
静态文件和查找器的位置:
STATICFILES_DIRS = (
'/www/example/static'
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
我的Nginx配置文件:
upstream gunicorn {
server 127.0.0.1:8000 fail_timeout=0;
}
server {
listen 80;
server_name www.example.com;
rewrite ^/(.*) http://example.com/$1 permanent;
}
server {
listen 80;
server_name example.com;
root /www/example;
client_max_body_size 4G;
keepalive_timeout 5;
location /static/ {
alias /www/example/static/;
}
location /media/ {
alias /var/www/example/media/;
}
try_files $uri @django;
location @django {
proxy_pass http://gunicorn;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /www/example/static;
}
}
我可以看到该站点正确地在服务器我的静态文件。例如,我可以看到此图像:
http://example.com/static/img/small_img.jpg
但是当我尝试访问Django样式表时,Nginx引发404错误...
http://example.com/static/admin/css/base.css
...即使在浏览器中执行“查看源代码”也会显示以下链接:
<link rel="stylesheet" type="text/css" href="/static/admin/css/base.css" />
<link rel="stylesheet" type="text/css" href="/static/admin/css/login.css" />
这是我做过的其他事情:
我将尝试通过将Django的静态文件复制到站点的静态文件目录并更改base.html版本中的href来尝试“猴子修补”。但是,这不是一个好的解决方案。
抱歉,这么长的帖子。谁能告诉我我在做什么错?除此之外,管理站点似乎正在运行。只是样式表不会加载。谢谢!
看来您STATIC_ROOT
与nginx的location /static/
别名不匹配。你不见了/var/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句