2015-04-25 2 views
1

Я использую django-jsignature в своем проекте django. После выполнения запроса на отправку форма возвращает «тип» экземпляра ». Я пытаюсь сохранить это как изображение, но я получаю вышеуказанную ошибку.TypeError: должен быть строка или буфер, а не экземпляр

Еще лучше было бы сохранить данные формы в виде векторного изображения, как предложено в документах.

Моя функция:

def signature(request): 
    form = SignatureForm(request.POST or None) 
    if form.is_valid(): 
     signature = form.cleaned_data.get('signature') 
     if signature: 
      # as an image 
      signature_picture = draw_signature(signature) 
      signature_file_path = draw_signature(signature, as_file=True) 
      with open(signature_file_path), 'wb') as f: 
       f.write(signature_picture) 

(signature_file_path == '/tmp/tmpB71Wft.PNG')

ответ

1

Я думаю, что документы немного неясны, но вы должны использовать либо draw_signature(data, as_file=False) (по умолчанию) ИЛИ draw_signature(data, as_file=True), не нужно обоим.

Передача значения True в as_file делает пакет dump the image content to a file, в то время как False делает его вернуть экземпляр PIL.Image.

Исходные данные по-прежнему доступны в переменной signature (как строка или список JSON, поэтому вы также можете использовать этот вектор напрямую.

0

Может draw_signature() принимает один или два аргумента? В вашем коде он принимает один аргумент в одном месте и два аргумента во втором месте.

Смежные вопросы