【问题标题】:How to make file upload facultative with Deform and Colander?如何使用 Deform 和 Colander 实现文件上传功能?
【发布时间】:2012-09-14 20:56:26
【问题描述】:

我想呈现一个包含一系列文件的表单,代表产品的不同图像。提供文件应该是临时性的,因此即使没有文件,表单也应该验证。我怎样才能做到这一点 ?

这是我使用的滤锅模式:

    import colander
    import deform
    from deform import Form
    from deform import ValidationFailure
    from deform.interfaces import FileUploadTempStore 


    tmpstore = FileUploadTempStore()

    class Image(colander.Schema):
        image = colander.SchemaNode(
            deform.FileData(),
            widget=deform.widget.FileUploadWidget(tmpstore)
            ) 

    class Images(colander.SequenceSchema):
        images = Image()

    class ProductSchema(colander.Schema):
        completename = colander.SchemaNode(colander.String(), title="Complete Name")

        description = colander.SchemaNode(colander.String(), 
                                 widget = deform.widget.TextAreaWidget())

        images = Images()


    schema = ProductSchema()
    form = Form(schema, buttons=("submit", ))

我尝试添加一个“缺失”参数,例如:

image = colander.SchemaNode(
        deform.FileData(),
        missing = ???
        widget=deform.widget.FileUploadWidget(tmpstore)
        ) 

我想我得到了一些功能性的东西

missing={'filename': None, 'uid':None}

但我真的不确定这是不是正确的做法......

谢谢!

【问题讨论】:

  • 最好在 Pylons 列表中询问
  • @Sentinel - 为什么更好?这对于 SO 来说是一个非常好的问题,就像那些在 Django 和其他框架上的问题一样......你试图做的重点是什么? (诚​​实的问题,我只是想理解逻辑)
  • @mac:如果这是一个好问题,你为什么不投票呢? ;-)
  • @ascobol - +1 因为你要求它,但由于我对塔架一无所知,所以我很难判断你是否在发布问题之前做好了研究(也许有数万亿个其他相同的问题在 SO 上的措辞不同?)。
  • @Sentinel:邮件列表很烂。它们通常比 SO 之类的网站慢得多,您通常必须先注册(然后接收有关您不关心的垃圾邮件),...

标签: python pyramid deform colander


【解决方案1】:

您可以尝试“missing = colander.null”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多