我想上传一个具有以下滤锅架构的文件:
import colander
import deform
from deform.interfaces import FileUploadTempStore
@view_config(route_name='upload',
renderer='templates/upload.pt',
permission='view')
def upload(self):
tmpstore = FileUploadTempStore()
class Schema(colander.Schema):
name = colander.SchemaNode(
deform.FileData(),
widget=deform.widget.FileUploadWidget(tmpstore),
title='Upload'
)
def on_validated(request, captured):
pass
schema = Schema()
form = deform.Form(schema, buttons=('upload',), formid='form')
html = []
captured = None
if 'upload' in self.request.POST:
try:
controls = self.request.POST.items()
captured = form.validate(controls)
response = on_validated(self.request, captured)
if response is not None:
return response
except deform.ValidationFailure as e:
html.append(e.render())
else:
html.append(form.render())
html = ''.join(html)
return {
'form': html,
}
该视图工作正常,我可以浏览并选择一个文件。但是,当我按下“上传”按钮时,出现错误:
TypeError: 'NoneType' object does not support item assignment
已controls
定义,但form.validate()
问题在于。它指的是deform/widget.py第1674行:
self.tmpstore[uid]['preview_url'] = preview_url