我正在使用Google App Engine开发一个简单的Web应用程序,我想了解如何正确使用属性上的verbose_name选项。
我有一个简单的模型:
from google.appengine.ext import ndb
class Person(ndb.Model):
name = ndb.StringProperty(required=True, verbose_name='my_name')
surname = ndb.StringProperty(required=True, verbose_name='my_surname')
然后我有一个非常简单的HTML页面,向用户显示一个表单。调用此页面并使用Jinja2模板引擎作为响应发回。
<html>
<body>
<form action="/test" method="POST">
<label>Insert name:</label>
<input name="my_surname" type="text"/>
<label>Insert surname:</label>
<input name="my_surname" type="text"/>
<button type="submit">Insert!</button>
</form>
</body>
</html>
我希望能够在html页面中使用属性verbose_name
,以便将来能够非常轻松地更改属性名称。正如Google App Engine文档所述,verbose_name
是:
可在HTML表单框架中使用的可选HTML标签,例如jinja2。
我期望的是这样的事情:
<input name="{{ my_name }}" type="text"/>
<input name="{{ my_surname }}" type="text"/>
非常感谢任何帮助。
答案 0 :(得分:2)
对于初学者来说,verbose_name
的目的是在标签中使用它,而不是输入的名称。如果名称与模型匹配(为了清晰和未来的自动化),它会更好,而且我认为它不会经常变化(如果有的话),因为这需要大量的工作(比如重写所有实体。)
标签是用户在表单中读取的内容,由于含义或使其更清晰,可能会发生变化。这使您可以从代码而不是直接在模板上更改输出,这在自动生成表单时特别有用(这是属性的实际用途)。
因此,至于你的实际问题,它就像:
一样简单<input name="{{ models.Person.name._verbose_name }}" type="text"/>
这意味着您必须将模型(或至少是模型,Person)作为上下文中的附加值获取模板。