2012-01-28 68 views
35

我在heroku中有一个项目(myapp),但无法使静态文件正常工作。我正在关注这个blog postHeroku - 处理Django应用程序中的静态文件

Procfile看起来是这样的:

web: python myapp/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT myapp/settings.py 

settings.py

... 

STATIC_ROOT = os.path.join(PROJECT_PATH, 'staticfiles') 
STATIC_URL = '/static/' 
ADMIN_MEDIA_PREFIX = '/static/admin/' 

STATICFILES_DIRS = (
    # I have the static folder inside my app and not inside the project 
    os.path.join(PROJECT_PATH, 'cesar/static'), 
) 

... 

重新使用heroku restart这当是什么heroku logs显示:

... 
Copying ... 

114 static files copied to '/app/myapp/staticfiles'. 
... 

但是当我做heroku run ls -l myapp/我不能看到staticfiles文件夹:

-rw------- 1 u5605 5605 0 Jan 28 16:53 __init__.py 
drwx------ 4 u5605 5605 4096 Jan 28 16:53 cesar 
-rw------- 1 u5605 5605 503 Jan 28 16:53 manage.py 
-rw------- 1 u5605 5605 6292 Jan 28 16:53 settings.py 
drwx------ 2 u5605 5605 4096 Jan 28 16:53 templates 
-rw------- 1 u5605 5605 257 Jan 28 16:53 urls.py 
-rw------- 1 u5605 5605 286 Jan 28 16:53 views.py 

我缺少什么或者做错了吗?

+2

我最近写了一个关于在Heroku应用上在S3上提供静态文件的详细解释,请查看 - http://balzerg.blogspot.co.il/2012/09/staticfiles-on -heroku-with-django.html – idanzalz 2012-09-09 09:05:32

回答

39

我找到了解决方案。这是我最初的myapp/urls.py

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


admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^$', include('myapp.cesar.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

我添加这些行到原来的myapp/urls.py文件的末尾:

if not settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 

现在它的正常工作。我希望这可以帮助别人

+0

我试过这样做,但是我遇到了这个错误,我的应用崩溃了。有任何想法吗? '2012-03-23T21:55:57 + 00:00 app [web.1]:ImportError:无法导入设置'appName/settings.py'(是否在sys.path中?):按文件名导入不是' – 2012-03-23 21:57:27

+1

@Aswath尝试'从django.conf导入设置' – 2012-08-03 13:10:44

+0

http://stackoverflow.com/questions/10308985/django-on-heroku-broken-admin-static-files – Dmitry 2013-01-16 08:30:28

0

在运行'./manage.py collectstatic'之前,可能应该手动创建在您的设置中指定的空STATIC_ROOT文件夹。

+0

已经尝试过。不工作 – 2012-01-29 16:48:37