Python Django静态文件(未找到404)-Openshift

Python Django静态文件(未找到404)-Openshift,python,django,static,openshift,static-files,Python,Django,Static,Openshift,Static Files,我试图在Openshift上使用Python/Django运行我的第一个项目,但在加载静态文件时遇到了问题 我已经读了好几遍了,一整天我都在为这件事绞尽脑汁,但还是没能找出问题所在 我正在运行开发人员服务器: python manage.py runserver setting.py STATIC_URL = '/static/' if 'OPENSHIFT_REPO_DIR' in os.environ: STATIC_ROOT = os.path.join(os.environ.

我试图在Openshift上使用Python/Django运行我的第一个项目,但在加载静态文件时遇到了问题

我已经读了好几遍了,一整天我都在为这件事绞尽脑汁,但还是没能找出问题所在

我正在运行开发人员服务器:

python manage.py runserver
setting.py

STATIC_URL = '/static/'

if 'OPENSHIFT_REPO_DIR' in os.environ:
    STATIC_ROOT = os.path.join(os.environ.get('OPENSHIFT_REPO_DIR'), 'wsgi', 'static')
else:
    STATIC_ROOT = os.path.join(WSGI_DIR, 'static')
模板

{% load static %}
<a href=""><img src="{% static "logo2.png" %}"></a>
最奇怪的是,在将我的应用程序推到openshift后,一切都正常,但在本地主机上出现了一些问题

长话短说:

  • 127.0.0.1:8000/static/logo2.png-未找到
  • mysite.rhcloud.com/static/logo.png-是的,我看到了图片
我希望这是清楚的,我的问题就像我想象的那样愚蠢

Django 1.8,操作系统Windows

解决方案:

我已从已安装的应用程序中删除了“django.contrib.staticfiles”,并将此代码添加到URL.py中:

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

您是否处于开发模式?如果是,并且安装的应用程序中没有django.contrib.static文件,则需要将其添加到URL.py:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
...   
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

解释。

是的,我认为我处于开发模式(DEBUG=True),并且在已安装的应用程序中有django.contrib.static文件。这种代码的和平并不存在;我们无法解决这个问题,而且仍然找不到静态文件。这样做很少是个好主意。当您拥有
DEBUG=True
Django通常可以从
static\u URL
提供静态文件,而无需向
urlpatterns
添加任何内容。问题可能是您将静态文件放在
WSGI_DIR/static
中,而不是放在app目录中,app目录是一个规范的位置。这也可能是因为这个原因,但有一次我遇到了同样的问题,我只使用此解决方案进行了修复。如果这不是一个好主意,为什么会出现在django官方文件中?
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
...   
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)