Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pyramid 带有两个选项卡的Deform 2/colander模式甚至无法验证_Pyramid_Deform_Colander - Fatal编程技术网

Pyramid 带有两个选项卡的Deform 2/colander模式甚至无法验证

Pyramid 带有两个选项卡的Deform 2/colander模式甚至无法验证,pyramid,deform,colander,Pyramid,Deform,Colander,尝试为deform 2、colander 1.0创建一个具有两个制表符(命令式样式)的窗体。该表单的目的是在手动添加网页及其标题或订阅源URL之间进行选择: @property def webpage_form(self): schema = colander.SchemaNode(colander.Mapping(unknown='preserve'), name="webpage_schema") schem

尝试为deform 2、colander 1.0创建一个具有两个制表符(命令式样式)的窗体。该表单的目的是在手动添加网页及其标题或订阅源URL之间进行选择:

@property
def webpage_form(self):
    schema = colander.SchemaNode(colander.Mapping(unknown='preserve'),
                                 name="webpage_schema")

    schema_page = colander.SchemaNode(colander.Mapping(unknown='preserve'),
                title=u"Webpage", missing={})
    webpage_name = colander.SchemaNode(
        colander.String(),
        name='webpage_name',
        default=u'Webpage',
        missing=u'',
    )
    webpage_url = colander.SchemaNode(
        colander.String(),
        name='url',
        default=u'-',
        missing=u'',
    )

    schema_page.add(webpage_name)
    schema_page.add(webpage_url)

    schema_feed = colander.SchemaNode(colander.Mapping(unknown='preserve'), 
                title=u"Feed", missing={})
    feed = colander.SchemaNode(
        colander.String(),
        name='feed_url',
        default=u'-',
        missing=u'',
    )

    schema_feed.add(feed)

    schema.add(schema_page)
    schema.add(schema_feed)
    return deform.Form(schema, buttons=('submit',))
在表单控制器(金字塔)中:

虽然控件似乎有数据:

  [('_charset_', u'UTF-8'),
  ('__formid__', u'deform'),
  ('__start__', u':mapping'),
  ('webpage_name', u'Webpage'),
  ('url', u'http://slashdot.org'),
  ('__end__', u':mapping'),
  ('__start__', u':mapping'),
  ('feed_url', u'-'),
  ('__end__', u':mapping'),
  ('submit', u'submit')]
appstruct为空:

  {'': {}}
尝试了标题、缺少、默认、未知参数,但没有结果。表格有什么问题


此外,有两个后续字段集代替了两个选项卡,但这可能是另一个故事。

解决了这个问题。
name
参数必须与
colander.schemaNone
一起使用,而不是
title
。生成的appstruct如下所示:

{'feed': {'feed_url': u''},
 'webpage': {'url': u'http://slashdot.org', 'webpage_name': u'Slashdot'}}
这正是人们所期望的

这有助于再次阅读:

每个模式节点对象都有一个必需的类型,一个可选的 在反序列化后调整数据,为 反序列化准备好的数据,可选默认值,可选缺失, 可选标题、可选描述,和略少的 可选名称

{'feed': {'feed_url': u''},
 'webpage': {'url': u'http://slashdot.org', 'webpage_name': u'Slashdot'}}