LINUX.ORG.RU

Django forms and textarea

 , ,


0

1

Ребята очень давно не писал на django, а когда писал то использовал его не на полную катушку. Есть форма в html , для неё обработчик начал писать:

class ContactForm(forms.Form):
    name = forms.CharField(max_length=255)
    email = forms.EmailField(max_length=255)
    phone = forms.CharField(max_length=255)
    text = forms.Textarea()
    file = forms.FileInput()

далее сама view:

def get_form(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            phone = form.cleaned_data['phone']
            text = form.cleaned_data['text']
            print name
            print email
            print phone
            print(text)
            return HttpResponseRedirect('/success')
        else:
            return HttpResponseRedirect('/')

и получаю в итоге ошибку:

KeyError at /form/

'text'
Хотя значение для textarea приходит, это видно в debug режиме который и выдает эту ошибку, не пойму почему тогда код выкидывает ошибку, плюс еще с загрузкой файла придется заморочиться. Код просто в режиме разработки еще, но почему-то проблемы только с textarea.


Ответ на: комментарий от vurdalak

Вот именно что значение приходит не пустое, может я не правильным образом в коде получаю значение textarea?

Berdin
() автор топика
Ответ на: комментарий от vurdalak

Когда выдает мне ошибку, я работаю пока в режиме debug=true и в request post params полностью вижу что за данные пришли, и вот там показано под ключем text то значение что я ввел в форму

Berdin
() автор топика
Ответ на: комментарий от vurdalak

Эту проблему я решил, пошел немного другим путем, но вот нарисовалась совсем другая: 'ascii' codec can't encode characters in position 0-5 и это когда в форме есть русский текст код

encoding = sys.getfilesystemencoding()
        print(encoding)
возвращает мне ANSI_X3.4-1968, и теперь проблема с этими данными с формы, мне их потом нужно собрать в кучу и отправить email, но при попытке print выдает такую ошибку, и как это пофиксить не знаю, или это только print в этом случае себя так ведет и данные если при отправке письма лягут в нужной кодировке.

Berdin
() автор топика
Ответ на: комментарий от rikimaru

Использовал метод encode('utf-8) и заработало

Berdin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.