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)
是的,我認爲我處於開發模式(DEBUG = True),並且我在INSTALLED_APPS中有django.contrib.staticfiles。代碼的這種安寧並沒有解決問題,靜態文件仍然沒有找到。 – dekarz
這樣做很少是一個好主意。當你有'DEBUG = True'時,Django通常可以從'STATIC_URL'服務靜態文件,而不需要向'urlpatterns'添加任何東西。問題可能在於你將靜態文件放在'WSGI_DIR/static'中,而不是放在app目錄中,這是規範的地方。 –
也可以因爲這一點,但一旦我有同樣的問題,我只用這個解決方案修復。如果這不是一個好主意,爲什麼在官方的django文檔中呢? –