代码之家  ›  专栏  ›  技术社区  ›  Richard Watson

应用引擎-为什么有电话号码,链接,评级等类别?

  •  10
  • Richard Watson  · 技术社区  · 15 年前

    我还没有找到一些应用引擎类存在的原因。有一个电话号码,一个链接,一个邮箱地址,一个地理位置,一个等级,等等。为什么这些被给予特殊待遇?他们似乎没有任何智慧——例如地理搜索。我知道链接比字符串属性有更多的空间,但是其余的呢?

    见: http://code.google.com/appengine/docs/java/datastore/dataclasses.html

    4 回复  |  直到 14 年前
        1
  •  7
  •   Nick Johnson    15 年前

    这些类型是“语义”类型。它们存在于Java API中,用于与Python API进行奇偶校验。在python API中,它们定义了与.to_xml()方法相关的特殊行为-例如,phoneNumberProperty序列化如下:

    <property name="foo" type="gd:phonenumber"><gd:phoneNumber>12345-678</gd:phoneNumber></property>
    
        2
  •  2
  •   Jason Hall    15 年前

    我认为它们主要是为了覆盖常见的案例并节省开发人员的时间。如果很多应用程序使用一个电话号码字段,为什么要求每个开发人员必须编写它们?如果开发人员需要/想要,他们仍然可以自己编写。

        3
  •  2
  •   wf.    15 年前

    不确定Java,但是在Python中,下面的模型/代码(在DeV服务器上测试)将抛出BADValeError,消息“无效URL:StaskPosiv.com”

    class foo(db.model):
        link = db.LinkProperty()
    
    bar = foo()
    bar.link = 'stackoverflow.com'
    

    而:

    bar.link = 'http://stackoverflow.com'
    

    工作良好。

    我还没有测试过,但是其他属性也可以或不可以进行验证。

        4
  •  1
  •   Null Pointer    15 年前

    基本上,在模型中使用这种类型可以向代码中添加间接元数据。如果您正在为模型类使用任何类型的通用呈现器,或者您正在对模型上的用户输入进行验证,那么这可能很有用。

    例如,如果对名为usernumber的字段使用phonenumber类型,则基于反射的渲染器可能会理解,它应该自动将相应的验证器分配给表示它的文本字段。

    当做, 帕维尔。