django 的 VariableDoesNotExist 的异常

2016-02-14 13:07:53 +08:00
 pc10201
python 2.7.11 and django 1.9
I run the code in "python manage.py shell"

Django 1.9
In[2]: import django
In[3]: from django.template import Template, Context
In[4]: t = Template("{% if x and x.strip %}OK{% else %}Empty{% endif %}")
In[5]: t.render(Context({}))
2015-12-17 14:13:43,443 [MainThread:3140] [django.template:923] [base:_resolve_lookup] [DEBUG]- Exception while resolving variable 'x' in template 'unknown'.
Traceback (most recent call last):
File "D:\Python27\lib\site-packages\django\template\base.py", line 901, in _resolve_lookup
(bit, current)) # missing attribute
VariableDoesNotExist: Failed lookup for key [x] in u"[{'False': False, 'None': None, 'True': True}, {}]"
Out[5]: u'Empty'

I use "if" in template,but it has excepiton.

众位群友,有知道怎么解决的吗?
4207 次点击
所在节点    Python
3 条回复
jimmyye
2016-02-14 13:19:21 +08:00
>Exception while resolving variable 'x' in template 'unknown'.
你要在`Context`中传入`x`
pc10201
2016-02-14 13:26:08 +08:00
@jimmyye 我想直接在模板中判断,在 jinjia2 中就可以这样直接使用,在 django 中就不行
jimmyye
2016-02-14 14:31:07 +08:00
@pc10201 哦,刚才没看清楚,确实这在模板中是不会抛出异常的,就算不判断,也只会静默处理。

https://github.com/tomchristie/django-rest-framework/issues/3736
这里有讨论到 django 1.9 的一些变化:
https://docs.djangoproject.com/en/1.9/topics/logging/#django-template

是因为 logger 的一些变化导致了原来静默的异常现在被输出了。
> 2015-12-17 14:13:43,443 [MainThread:3140] [django.template:923] [base:_resolve_lookup] [DEBUG]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/256408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX