【发布时间】:2010-04-22 23:15:57
【问题描述】:
Google App Engine 模型,例如:
from google.appengine.ext.db import Model
class M(Model):
name = db.StringProperty()
然后在一个从 Django 视图调用的 Jinja2 模板中,其中一个 M 实例作为 m 传入:
The name of this M is {{ m.name }}.
当m 被初始化而没有设置name 时,会打印以下内容:
这个M的名字是None。
最好的和预期的输出(以及使用 Django 模板时的输出)是/是:
这个M的名字是。
您知道为什么会发生这种情况,以及如何获得首选和预期的输出吗?
【问题讨论】:
-
值得注意的是,设置一个默认值,ala。
name = db.StringProperty(default="")解决了这个问题。问题似乎是m.name是 NoneType 除非有默认值。 -
你的类应该继承
db.Model,像这样:class M(db.Model):——这会改变什么吗? -
@Jason Hall - 感谢您的关注。不幸的是,这并不能解决问题。
-
我想你自己找到了答案。如果您没有为该属性指定名称,App Engine 似乎将其存储为
None,而不是“”,因此当它被打印时,它会被打印为“无”。将默认值指定为“”,您的问题就会消失,就像您说的那样。 -
@Jason Hall:他是从 db 模块导入模型,而不是导入 db 本身的正常做法。这不是问题,除非在风格上。
标签: python google-app-engine jinja2