Django 模板标签中的冒号语法:仅在新版本中?
我刚把一个应用程序部署到新的服务器上,虽然我使用了虚拟环境,但还是不得不在生产服务器上安装一个新的环境,因为它的架构不同。
总之,在开发环境中我没有遇到任何模板语法错误,但在生产服务器上,我却收到了:
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及以上版本才支持。
问题解决了。