2017-02-07 87 views
0

我想在Openshift上使用Python/Django來運行我的第一個項目,並加載我的靜態文件時出現問題。Django的靜態文件(404找不到) - Openshift

我已經多次閱讀https://docs.djangoproject.com/en/dev/howto/static-files/我一直在爲這一整天打破我的頭,但無法弄清楚問題所在。

我正在開發服務器:

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> 

urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from django.views.generic import RedirectView 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

urlpatterns = [ 
    url(r'^$', RedirectView.as_view(url='/index/')), 
    url(r'^index/', include('index.urls')), 
    url(r'^polls/', include('polls.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
] 

urlpatterns += staticfiles_urlpatterns() 

最奇怪的是,在推送我的應用程序openshift後,一切正常,但在本地主機上出錯了。

請長話短說:

  • 127.0.0.1:8000/static/logo2.png - 找不到
  • mysite.rhcloud.com/static/logo.png - 是啊,我看到圖像

我希望這很清楚,我的問題和我想象的一樣愚蠢。

的Django 1.8,操作系統Windows

SOLUTION:

我從INSTALLED_APPS刪除 'django.contrib.staticfiles',並加入到這個urls.py和平代碼:

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

回答

-1

您是否處於開發模式?如果是的話,如果你沒有在INSTALLED_APPS django.contrib.staticfiles,你需要添加這的urls.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) 

解釋here

+0

是的,我認爲我處於開發模式(DEBUG = True),並且我在INSTALLED_APPS中有django.contrib.staticfiles。代碼的這種安寧並沒有解決問題,靜態文件仍然沒有找到。 – dekarz

+0

這樣做很少是一個好主意。當你有'DEBUG = True'時,Django通常可以從'STATIC_URL'服務靜態文件,而不需要向'urlpatterns'添加任何東西。問題可能在於你將靜態文件放在'WSGI_DIR/static'中,而不是放在app目錄中,這是規範的地方。 –

+0

也可以因爲這一點,但一旦我有同樣的問題,我只用這個解決方案修復。如果這不是一個好主意,爲什麼在官方的django文檔中呢? –