Stackato 不为 Django 静态文件提供服务

Stackato not servering Django static files

我正在将 Django 应用程序部署到 Stackato。除静态文件外,一切正常。根据文档,这是我在 .yml 文件中的设置:

processes:
  web: $STACKATO_UWSGI --static-map /static=$HOME/static

这是我的本地 setting.py:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(PROJECT_PATH, "static"),
    '/var/www/static/',
)

此外,这是我的项目结构

Project -- .....
           |
            static -- css
                  |
                   -- images

我没有从日志中看到任何错误。有什么想法吗?

您的配置应该有效。具体来说,您的 static/cssstatic/images 目录中的资产将通过 http://your-stackato-host/static/css/yourstyle.css.[= 等网址提供。 12=]

为了帮助解决这个问题,我创建了一个 bare-bones example on github,您可以克隆它并推送到 Stackato 以验证它是否正常工作。

刚弄明白:

1.While settings.DEBUG 设置为 True,必须包含静态 url 模式:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns()

2.Static 文件应遵循以下结构:

Project -- <app 'Project'> -- settings.py
           |                  |
           |                  -- urls.py
           |                  |
           |                  -- wsgi.py
           |
           -- <app 'somename'> -- ..
                            |
                            -- static -- <app 'somename'> -- css - a.css
                                                          |
                                                          -- images - a.jpg

3.STATIC_ROOT不应该是静态目录的实际位置,可以是这样:Project/Project/static,而STATICFILES_DIRS必须是实际的静态文件目录是Project/somename app/static

参考:https://github.com/mozilla/mozmoderator