загрузка файлов в defrom. Как?

постигаю pyramid. (а вместе с ней и python)
Мспользую модуль defrom. Вернее начал использовать и тут же столкнулся с непонятностями. Как загрузить файл используя defrom.

прикрутил виджет FileUploadWidget, но где файл искать после сабмита формы? Подскажите…
  • Вопрос задан
  • 2677 просмотров
Решения вопроса 1
@gelas
Вот пример
http://deformdemo.repoze.org/file/
class Schema(colander.Schema):
    upload = colander.SchemaNode(
        deform.FileData(),
        widget=deform.widget.FileUploadWidget(tmpstore))


В поля типа FileData есть все нужные данные
Лучше всего, видимо, при обработке формы взять файл (в form.upload.fp) и сохранить на диск куда надо.

Также обратите внимание на параметр tmpstore у deform.widget.FileUploadWidget
создав свой tmpstore можно контролировать где будет храниться временно загруженный файл
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@gelas
сохранить можно например так
controls = request.POST.items()
captured = form.validate(controls)
file_data = captured['upload']['fp']
    with open('/tmp/%s' % captured['upload']['filename'], 'wb') as new_file:
        new_file.write(file_data.read())
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы