我有一个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

如果失败,它将给您一个错误或追溯,以调查并进一步诊断问题。

09-30 16:00
查看更多