5

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

尽管如此..my django admin staticfiles 并没有被使用,我在heroku 上获得了一个简单的django 管理站点,其中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 进行了尝试,但都没有向我显示“正常”管理站点。有没有办法在不走 S3 路线的情况下将我的管理文件放在 heroku 上。

4

4 回答 4

11

命令终端输出没有关于收集静态文件的任何内容。

查看heroku-buildpack-python:bin/steps/collectstatic ,它似乎在显示消息之前尝试执行 acollectstatic --dry-run --noinput并将其输出到管道。这意味着,如果您的本地机器上没有出现错误,您将永远不会在 heroku 上看到错误:它将静默失败。(最好的失败;)/dev/null-----> Collecting static files

您是否尝试过运行一次性工作者来测试 collectstatic 命令并查看其环境是否存在问题?

heroku run python manage.py collectstatic --dry-run --noinput

如果此操作失败,它将为您提供错误或回溯以查看并进一步诊断问题。

于 2013-04-07T04:08:02.313 回答
2

看看这个Django 和静态资产。它似乎最近更新了,您可以使用这个dj-static包很好地提供静态文件。

于 2013-07-26T16:35:32.120 回答
2

试试这三件事:

  • 创建此 Heroku 配置变量:DJANGO_SETTINGS_MODULE值为 --myapp.settings.prod或适合您的 Heroku 设置文件
  • 使用 Heroku 文档中描述的 Whitenoise: https ://devcenter.heroku.com/articles/django-assets
  • 签入并重新部署您的测功机:git push heroku master

我发现我错过了第一项,DJANGO_SETTINGS_MODULE“例如,命令行 collectstatic 可以工作,但没关系 b/c 它是一个短暂的测功机

于 2017-02-17T00:00:05.577 回答
1

把它扔在那里,因为愚蠢的错误发生:

我花了很多时间试图弄清楚为什么我的模块在本地工作正常时在 heroku 上找不到,只是意识到它被一个条目忽略了.slugignore

于 2017-03-06T23:21:32.600 回答