首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有两个制表符的Deform 2/ colander模式甚至不验证。

带有两个制表符的Deform 2/ colander模式甚至不验证。
EN

Stack Overflow用户
提问于 2015-05-26 13:29:09
回答 1查看 126关注 0票数 1

尝试为deform 2 (冒号1.0 )创建一个带有两个制表符(命令式样式)的表单。表单的思想是在手动添加网页和它的标题之间进行选择,或者选择一个提要URL:

代码语言:javascript
复制
@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',))

在表单控制器(金字塔)中:

代码语言:javascript
复制
controls = request.POST.items()
...
appstruct = self.webpage_form.validate(controls)

虽然控件似乎有数据,但是:

代码语言:javascript
复制
  [('_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是空的:

代码语言:javascript
复制
  {'': {}}

尝试了标题,缺失,默认,未知的参数,没有结果。这个表格有什么问题?

另外,除了两个选项卡之外,还有两个相应的字段集,但这可能是另一个故事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 09:52:51

解决了问题。name参数必须与colander.SchemaNode而不是title一起使用。然后,得到的appstruct如下所示:

代码语言:javascript
复制
{'feed': {'feed_url': u''},
 'webpage': {'url': u'http://slashdot.org', 'webpage_name': u'Slashdot'}}

这正是人们所期望的。

它有助于再次阅读医生们

每个架构节点对象都有必需的类型、反序列化后调整数据的可选预报器、反序列化准备数据的可选验证器、可选的默认值、可选的缺失、可选的标题、可选的说明、和可选名称

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30460001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档