我有一个django应用程序,已成功将其转换到heroku。当我在本地空运行collectstatic命令时,一切正常。
python manage.py collectstatic --dry-run --noinput
....
Pretending to copy '/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/ordering.js'
Pretending to copy '/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js'
71 static files copied.
尽管如此,我的django admin静态文件没有被使用,我在eroku上得到了一个简陋的django admin站点,将Debug设置为False。
如果将Debug设置为True,则会在heroku上获得一个“丰富”管理站点。在Debug设置为True或False的情况下,“git push heroku master”命令终端输出没有任何有关收集静态文件的信息。
我尝试了使用来自Heroku的gunicorn并显示“收集静态”消息的示例“helloworld”应用程序。我还尝试将此代码段插入到urls.py中。但这也无济于事。
从django.conf导入设置
if not settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
接下来,我尝试将以下内容添加到我的heroku配置中
heroku config:add DISABLE_COLLECTSTATIC=0
但这也没有显示我所有风格的django管理站点。
最终,我尝试使用Procfile切换到gunicorn,但也没有显示管理样式。只有设置Debug = True才能显示我的管理风格。
我在Heroku上使用Django 1.4.2和1.5.1进行了尝试,但都没有显示“正常”管理站点。有什么办法可以让我的管理文件在heroku上,而无需走S3路线。
最佳答案
查看heroku-buildpack-python:bin/steps/collectstatic似乎它尝试执行collectstatic --dry-run --noinput
并将其输出通过管道传递到/dev/null
,然后显示-----> Collecting static files
消息。这意味着,如果本地框上没有出现错误,您将永远不会在heroku上看到该错误:它将无声地失败。 (最好的一种失败;)
您是否尝试过运行一次性 worker 来测试collectstatic命令,并查看其环境是否存在问题?
heroku run python manage.py collectstatic --dry-run --noinput
如果失败,它将给您一个错误或追溯,以调查并进一步诊断问题。