Django 模板标签中的冒号语法:仅在新版本中?

1 投票
1 回答
663 浏览
提问于 2025-04-15 23:57

我刚把一个应用程序部署到新的服务器上,虽然我使用了虚拟环境,但还是不得不在生产服务器上安装一个新的环境,因为它的架构不同。

总之,在开发环境中我没有遇到任何模板语法错误,但在生产服务器上,我却收到了:

Exception Type:     TemplateSyntaxError
Exception Value:    Caught SyntaxError while rendering: invalid syntax (views.py, line 25)

出问题的那一行是:

{% url admin:password_change as password_change_url %}

当我把那一行去掉后,模板语法错误就跳到了下一行,只要那一行有冒号(并且其他模板标签都能正常工作)。

所以我想问的是:在Python或Django的版本上是否有差异,导致某些命名空间语法可以用而某些不可以用呢?

这些模板标签是在django-grappelli里(http://code.google.com/p/django-grappelli/),所以我不太想去翻他们的代码,重写所有的模板标签。

开发服务器:

  • 32位的Debian系统
  • Python 2.5.5
  • Django 1.2.1

生产服务器:

  • 64位的CentOS系统
  • Python 2.4.3
  • Django 1.2.1

有什么想法吗?

1 个回答

1

仔细一看,我发现这行代码并不是出错的地方,尽管在错误追踪中它被标记出来了:

{% url admin:password_change as password_change_url %}

真正出错的地方是在我的views.py文件里,我用了三元运算符("this" if condition else "that")。我没想到,这种写法只在Python 2.5及以上版本才支持。

问题解决了。

撰写回答