nextel
@nextel
ненавижу javascript

Как убрать Bad Request?

Здравствуйте,
есть функция

def post(self):

        print(request.form)

         #Если все необхоидмые поля заполнены 
        if request.form['name'] and request.form['lastname'] and request.form['email'] and request.form['password']:
           #Если юзера с таким мылом в базе ещее нет
            if email_exist(request.form['email']) == False:
                #Создаем юзера
                create_user(request.form)
                #проверяем пришли ли чекбоксы и привзяваем их к юзеру в базе
                #========================================================
                if request.form['op1']:

                    fa_roles(request.form['email'], 1)
                    print('op1')
                
                if request.form['op2']:
                    print('op2')
                    fa_roles(request.form['email'], 2)
               

                if request.form['op3']:
                    fa_roles(request.form['email'], 3)
                    print('op3')
                #============================================              
                
                return redirect(url_for('registration.regcomplete'))
            else:
               return render_template('registration.html', error='уже есть такое мыло')

        else:
            return render_template('registration.html', error= 'Заполни все поля')

        return self.get()

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

#fa_roles
@db_session
def fa_roles(email, role):

    user = User.get(email = email)
    user.roles +=Roles.get(id = role)
  • Вопрос задан
  • 2313 просмотров
Решения вопроса 1
Tark
@Tark
Pyramid'альный мир
Дело в том, что если чекбокс не отмечен, то никакого параметра в POST/GET не передаётся.

if request.form['op2']:  # Ой!
    pass

if request.form.get('op2'):  # так гораздо лучше
    pass
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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