2012-01-28 40 views
35

Tôi có một dự án (myapp) trong heroku nhưng tôi không thể nhận các tệp tĩnh hoạt động đúng cách. Tôi đã theo dõi số blog post này.Heroku - Xử lý các tệp tĩnh trong ứng dụng Django

Procfile của tôi trông như thế này:

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'), 
) 

... 

Khi khởi động lại sử dụng heroku restart đây là những gì heroku logs show:

... 
Copying ... 

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

Nhưng khi tôi làm heroku run ls -l myapp/ tôi không thể thấy thư mục 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 

Tôi bị thiếu hoặc làm sai?

+2

Gần đây tôi đã viết giải thích chi tiết về cách phân phát tệp tĩnh trên S3 từ ứng dụng Heroku, hãy kiểm tra - http://balzerg.blogspot.co.il/2012/09/staticfiles-on -heroku-with-django.html – idanzalz

Trả lời

39

Tôi đã tìm được giải pháp. Đây là lần đầu tôi 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)), 
) 

tôi thêm những dòng này vào cuối myapp/urls.py tập tin ban đầu:

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

Bây giờ nó làm việc tốt. Tôi hy vọng điều này sẽ giúp người khác quá

+0

Tôi đã thử làm điều này, nhưng tôi đã nhấn lỗi này và ứng dụng của tôi bị lỗi. Bất kỳ ý tưởng? '2012-03-23T21: 55: 57 + 00: 00 ứng dụng [web.1]: ImportError: Không thể nhập cài đặt 'appName/settings.py' (Có phải trên sys.path?): Nhập theo tên tệp không được hỗ trợ.' –

+1

@Aswath thử 'từ cài đặt nhập django.conf ' –

+0

http://stackoverflow.com/questions/10308985/django-on-heroku-broken-admin-static-files – Dmitry

0

Có lẽ bạn nên tạo thủ công thư mục STATIC_ROOT trống được chỉ định trong cài đặt trước khi chạy './manage.py collectstatic'.

+0

Đã thử điều đó. Không hoạt động –

Các vấn đề liên quan