Уведомления

Группа в Telegram: @pythonsu

#1 Май 14, 2016 19:44:57

balalay12
Зарегистрирован: 2014-07-28
Сообщения: 92
Репутация: +  4  -
Профиль   Адрес электронной почты  

Flask WTF!!!

Добрый вечер.

Код

    @login_required
    def post(self):
        data = request.get_json()
        for set in data:
            print('1', set)
            repeats = set.pop('repeats')
            del set['exercise_name']
            print('2', set)
            # print(type(set['exercise']))
            form = SetsForm(data=set.items())
            print('3', form.date.data, form.exercise.data)
            if form.validate():
                print('validate')
                return '', 200
            else:
                print(form.errors)
                return '', 200

Есть вот такой код, но дело в том что ведет он себя как-то не правильно.
Выдает вот такую ошибку
1 {'repeats': [{'repeats': 123123, 'weight': 112}, {'repeats': 2323, 'weight': 2323}], 'exercise_name': 'Сгибания запястий за спиной со штангой в положении стоя', 'exercise': 99, 'date': '2016-05-14'}
2 {'exercise': 99, 'date': '2016-05-14'}
3 2016-05-14 None
{'exercise': ['Not a valid integer value']}

Перезапускаю сервер обновляю страницу и ошибка уже такая
1 {'date': '2016-05-14', 'exercise': 119, 'exercise_name': 'Поднятие диска, лежа головой вверх на скамье', 'repeats': [{'weight': 12, 'repeats': 12}, {'weight': 34, 'repeats': 34}]}
2 {'date': '2016-05-14', 'exercise': 119}
3 None 119
{'date': ['Not a valid date value']}

Не могу понять почему так происходит. Куда деваются данные. То ли я что-то не так сделал то ли в упор очевидного не вижу.

Офлайн

#2 Май 15, 2016 06:27:12

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Flask WTF!!!

1.

for set in data:
Никогда так не делайте. set - встроенная функция питона, никогда не переопределяйте встроенные функции
https://docs.python.org/2/library/functions.html
2.
form = SetsForm(data=set.items())
А здесь точно надо items? Логичнее было бы так
form = SetsForm(data=set)



Офлайн

#3 Май 15, 2016 06:59:14

balalay12
Зарегистрирован: 2014-07-28
Сообщения: 92
Репутация: +  4  -
Профиль   Адрес электронной почты  

Flask WTF!!!

FishHook
После того как написал пост я вспомнил про множества и переименовал переменную, но мне это не помогло.
А items(). Это я уже пробовал различные варианты передачи в форму. Так-то да, без items().

Офлайн

#4 Май 15, 2016 09:46:31

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Flask WTF!!!

Бог ты мой. Зачем так сложно??? Мой мозг выбежал и пошел играть с хорьком
Короче. Проще. Я смотрю Вы пытаетесь освоить Flask. Это позитивная задача. Есть есть скайп, то киньте его в личку. Смогу провести ликбез если будет надо…

Офлайн

#5 Май 21, 2016 12:25:38

balalay12
Зарегистрирован: 2014-07-28
Сообщения: 92
Репутация: +  4  -
Профиль   Адрес электронной почты  

Flask WTF!!!

Вот так валидация проходит с 1 упражнением, но если отправить несколько, то отпадывает с ошибкой

ValueError: too many values to unpack (expected 2)
@login_required
def post(self):
    data = request.get_json(force=True)
    for day in data:
        test = dict()
        test['date'] = day.pop('date')
        test['exercise'] = day.pop('exercise')
        form = SetsForm(data=test)
        if form.validate():
            print('validate')
        else:
            print(form.errors)
            return '', 200

Отредактировано balalay12 (Май 21, 2016 12:26:18)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version