2010-08-16 2 views
-1

В основном я хочу вернуть содержимое create_user в функцию register, которая будет использоваться для сохранения в моей базе данных. Я полный новичок. Что я недопонимаю?Python beginner question - попытка понять return statement

def register(): 
    form = SignupForm(request.form) 
    if request.method == 'POST' and form.validate(): 
    create_user = ({'username' : form.username.data, 'email' : form.email.data, 
         'password': form.password.data}) 
    flash('Thanks for registering') 
    return create_user, redirect(url_for('loggedin.html')) 
return render_template('get-started.html', form=form) 

create_user = register() 
doc_id, doc_rev = db.save(create_user) 
+1

Я смущен о вашем втором заявлении о возврате. : s это не с отступом, и если бы это было так, это никогда не будет выполнено. : s –

ответ

3

Ваш отпечаток неправильный; вы хотите:

def register(): 
    form = SignupForm(request.form) 
    if request.method == 'POST' and form.validate(): 
     create_user = ({'username' : form.username.data, 'email' : form.email.data, 
          'password': form.password.data}) 
     flash('Thanks for registering') 
     return create_user, redirect(url_for('loggedin.html')) 
    return render_template('get-started.html', form=form) 

Отступы выделяют блоки кода. Вам нужно сделать отступ всего внутри функции, чтобы показать, что это код, соответствующий этой функции, и все внутри if. Вы не отступали от if.

4

Я думаю, что вы где-то потеряли какое-то форматирование. Первый оператор возврата должен быть отступом достаточно далеко, чтобы он находился внутри блока if, а второй оператор return должен совпадать с блоком if. Если проверка завершается успешно, он возвращает кортеж create_user, redirect(url_for('loggedin.html')), в противном случае он возвращает render_template('get-started.html', form=form).

1

Вы помните, как импортировать запрос? Не уверен, что вы используете, но для меня это выглядит как Flask, и если да, то это «из запроса на импорт флажков».