使用 Django 在 Openshift 上静态文件

Static files on Openshift with Django

我找不到我的静态文件,如 css、js 和图片。我收到 404 错误页面。

在我的 settings django 我有

STATIC_ROOT = '/var/lib/openshift/*id*/app-root/repo/*project*/*app*' 
STATIC_URL = '/static/'

我的文件系统是

 - project
   - app
     - wsgi.py
     - static # I also tried to move this folder in wsgi folder
       - css
         - base.css
     - ... 

我试图将 static 文件夹 移动到之前创建的 wsgi 文件夹。 我还尝试将 我的静态文件夹或 wsgi 文件夹移动到 openshift 的 data 文件夹中,但没有成功。

我关注了一些来自 Whosebug 的帮助帖子,但没有找到我的答案

你能帮我配置我的静态文件夹吗?

谢谢

在您的 settings.py 中确保您拥有:

import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static_files'),
                   )  # create static_files dir and place there your static  
                      # files to be collected, as static is the destination
                      # directory of your local and other Django 
                      # modules static files 

STATIC_ROOT = os.path.join(BASE_DIR, 'static', )
STATIC_URL = 'http://yourdomain.com/static/'

完成后运行

 ./manage.py collectstatic 

确保你有像这样的树

 yourproject+
            |
            +-yourproject
            |           | 
            |           +urls.py  
            |           |
            |           +settings.py
            |           |
            |           +wsgi.py
            |
            +manage.py
            |
            +static_files
            |
            +static

您还需要确保您的 manage.py 修改为:

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")

    from django.core.management import execute_from_command_line  

    execute_from_command_line(sys.argv)

和wsgi.py成为

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")

application = get_wsgi_application()

wsgi.py我必须有 sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'])) os.environ['DJANGO_SETTINGS_MODULE' ] = 'project.settings.app' 在我的 settings.py STATIC_ROOT = os.path.join(os.getenv('OPENSHIFT_REPO_DIR'), 'wsgi/static', ) STATIC_URL = '/static/' 还有我网站的文件系统 repo project ... wsgi static wsgi.py