2015-07-05 75 views
2

我的django應用程序在本地服務器上運行良好。但是,當我將它部署在Heroku上時,靜態文件不會被提供(獲得404錯誤)。請幫忙!Django靜態文件無法在Heroku上工作

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from django.conf.urls.static import static 
from django.conf import settings 

urlpatterns = patterns('', 
     url(r'^$', 'product.views.home', name='home'), 
     url(r'^admin/', include(admin.site.urls)), 

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

靜態文件設置:

TEMPLATE_DIRS = (
     os.path.join(BASE_DIR, 'templates'), 
) 

    STATIC_URL = '/static/' 

    MEDIA_URL = '/media/' 

    MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media") 

    STATIC_ROOT = os.path.join(BASE_DIR, "static", "static_root") 

    STATICFILES_DIRS = (
     os.path.join(BASE_DIR, "static", "static_dirs"), 
) 

WSGI文件 -

import os 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "acton.settings") 

    from django.core.wsgi import get_wsgi_application 
    application = get_wsgi_application() 

    try: 
     from dj_static import Cling 
     application = Cling(get_wsgi_application()) 

    except: 
     pass 

回答

1


這是我設置爲靜態文件,以在Heroku上部署。

希望這將有助於:

進口OS
BASE_DIR = os.path.dirname(os.path.abspath則(文件))
STATIC_ROOT = 'staticfiles'
STATIC_URL =」 /靜態/」
MEDIA_ROOT = os.path.join(PROJECT_PATH, 「介質」)
MEDIA_URL = 「/媒體/」
STATICFILES_DIRS =(
os.path.join(BASE_DIR, '靜態'),

+0

仍然有同樣的問題! – Deepak

+0

你可以告訴你是否在部署時,在你的終端上運行python manage.py collectstatic命令時出現錯誤? –

+0

不,當我運行'heroku運行python manage.py collectstatic'時 - 我沒有看到錯誤,收集了靜態文件。 heroku上管理員的css文件有什麼奇怪的現象。它只是我遇到問題的前端。 – Deepak

1

你setting.py文件是不正確configured.Static和媒體文件應

STATICFILES_DIRS = os.path.join(BASE_DIR, 'static') 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
+0

使用我的settings.py,靜態文件在開發服務器上運行良好。它只在Heroku生產服務器上有問題。現在,當根據您的建議更改settings.py時,我的靜態文件無法在開發服務器上運行! – Deepak

+0

檢查http://stackoverflow.com/questions/21141315/django-static-files-on-heroku和http://stackoverflow.com/questions/21141315/django-static-files-on-heroku – vijayscode

+0

我檢查了所有這些問題和嘗試他們的建議沒有成功。靜態文件在Heroku上成功收集,但不顯示。 – Deepak

1

爲別人自帶在這個問題上,對我而言,我錯過了我的wsgi.py文件中的whitenoise配置。

具體有以下幾種是從我wsgi.py文件丟失:

from whitenoise.django import DjangoWhiteNoise application = DjangoWhiteNoise(application)

文檔是在這裏:http://whitenoise.evans.io/en/stable/

相關問題