【问题标题】:Django on Heroku, url template tag causes 'ParseResult' object not callableHeroku上的Django,url模板标签导致'ParseResult'对象不可调用
【发布时间】:2026-02-15 19:25:05
【问题描述】:

有谁知道 Heroku 在部署时发生了哪些变化?我有一个使用 Ubuntu 11.10 的本地开发机器设置,我的项目安装到一个 venv 中,所有包都通过 pip 管理。相应的 requirements.txt 在我的 repo 中,并在推送时发送到 Heroku。我的本地机器和 Heroku 都在访问 AWS 上的同一个 RDS 实例。

在本地运行 Django 开发服务器 (manage.py runserver) 会生成一个工作页面。尝试(通过我的 Procfile)在 Heroku 上运行开发服务器会导致 {% url foobar %} 处的模板出现错误,如下所示:

Caught TypeError while rendering: 'ParseResult' object is not callable

我的 requirements.txt 包含以下内容:

Django==1.3.1
MySQL-python==1.2.3
PIL==1.1.7
amqplib==1.0.2
anyjson==0.3.1
boto==2.2.2
celery==2.5.1
distribute==0.6.24
django-celery==2.5.1
django-kombu==0.9.4
django-picklefield==0.2.0
django-piston==0.2.3
gevent==0.13.6
greenlet==0.3.4
gunicorn==0.14.2
httplib2==0.7.4
kombu==2.1.1
python-dateutil==1.5
wsgiref==0.1.2
zencoder==0.4

有人有想法吗?

【问题讨论】:

  • 你能发布完整的回溯吗?

标签: django heroku


【解决方案1】:

虽然恐怕我无法对您的问题提供太多见解,但关于“有人知道 Heroku 在部署时发生了什么变化吗?”的问题,那么对于 Django 应用程序来说,它只是以下问题:

Heroku DB config appended to your settings.py

这只是通过在环境中拉入DATABASE_URL 并相应地解析它来覆盖您现有的DATABASES 设置。

Basic Procfile autogenerated if you don't already have one

不要依赖这个,因为生成的 Procfile 只是使用 Django 开发服务器(将其替换为例如 one running gunicorn),但这就是启动基本项目所需的全部内容。

5MB (free) shared database added

这只是确保您的应用可以访问数据库。


现在,我看不出其中任何一个会如何导致您遇到问题,但 you seem to have that sorted 这很好。

【讨论】:

    【解决方案2】:

    我在使用 django-piston 时遇到了类似的问题(实际上是在 urls.py 中,而不是在模板渲染中)。我设法通过更改来修复它

    from django.conf.urls.defaults import url
    

    from django.conf.urls.defaults import url as django_url
    

    然后将 urlpatterns 中的所有 url() 指令更改为 django_url()。

    这也修复了我在管理页面中看到的模板。我不确定这是否是同一件事,但可能是一个富有成果的调查。

    【讨论】:

    • 哇。你真棒,先生。很长时间都搞不清楚到底发生了什么。