Openshift从Django App查找静态文件

时间:2018-06-18 16:29:09

标签: python css django openshift

我正在尝试将css文件添加到我在openhift上部署的django应用程序中。目前,我可以在本地运行调试时使用css文件。但是,当我将我的应用程序部署到openshift时,css文件没有任何效果。在线的许多其他问题似乎都是指旧版本的django和openshift(很多对wsgi文件夹的引用,它们似乎不再是标准的并且手动触发collectstatic < / p>

我对当前django / openshift关系的理解是我不需要手动执行collecstatic,因为我使用了openshift中的django-ex模板,并且在构建过程中,collectstatic命令自动运行,其输出为我可以在日志中看到。值得注意的是,我可以看到我的应用程序的style.css文件被复制到该日志中的STATIC_ROOT。

我项目根目录中的项目结构是:

.
├── db.sqlite3
├── djangoWrapper
│   ├── __init__.py
│   ├── settings.py
│   ├── templates
│   │   └── djangoWrapper
│   │       └── index.html
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
├── gitlab-ci.yml
├── ldap
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── __init__.py
│   ├── migrations
│   ├── models.py
│   ├── static
│   │   └── ldap
│   │       └── style.css
│   ├── templates
│   │   └── ldap
│   │       ├── apiOffline.html
│   │       ├── index.html
│   │       ├── results.html
│   │       └── search.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── manage.py
├── openshift
├── README.md
├── requirements.txt

这是我在settings.py中所做的事情:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'    
STATICFILES_DIRS = [os.path.join(BASE_DIR, "ldap", "static"),]         
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

在我的html文件中,我正在尝试使用

加载css文件
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'ldap/style.css' %}">
<head>部分中的

我试图在这里进行一些调试,因为在我进行部署之前会假设我的静态文件没有放在正确的位置/ djgano无法找到它们。所以我把一些打印件放到我的应用程序中并在openshift上部署它并获得以下信息:

BASE_DIR: /opt/app-root/src
STATIC_ROOT: /opt/app-root/src/static 
STATIC_URL: /static/ 
APP_VIEW_DIR: /opt/app-root/src/ldap/views.py 

以及将<p>"{%static 'ldap/style.css' %}"</p>放入html文件中,该文件显示为/static/ldap/style.css

从这些花絮中,我知道openshift的根目录是/opt/app-root/src/,我的静态文件在/opt/app-root/src/static,而我的html正在/static/ldap/style.css中寻找css文件。这似乎应该工作,因为所有这些目录排队。还有其他关于使用django / openshift提供静态文件的东西我在这里缺少吗?

1 个答案:

答案 0 :(得分:1)

终于成功了!按照步骤here,我确实使用了白噪声。