question Python débutant - essayer de comprendre la déclaration de retour
Question
En fait, je veux retourner le contenu de create_user dans la fonction de registre à utiliser pour enregistrer dans ma base de données. Je suis un débutant complet. Qu'est-ce que je comprends mal?
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)
La solution
Votre indenter est faux; vous voulez:
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)
Indentation blocs de code définit. Vous devez tiret tout dans la fonction pour montrer qu'il est le code correspondant à cette fonction, et tout à l'intérieur du if
. Vous n'êtes pas en retrait pour le if
.
Autres conseils
Je pense que vous avez perdu quelque part une mise en forme. La première déclaration de retour devrait être en retrait assez loin qu'il est à l'intérieur du bloc si et la deuxième déclaration de retour doit être aligné avec le bloc si. Si la validation réussit alors il retourne le tuple create_user, redirect(url_for('loggedin.html'))
, sinon il retourne render_template('get-started.html', form=form)
.
Avez-vous pensé à la demande d'importation? Je ne sais pas ce que vous utilisez, mais il semble que Flask pour moi, et s'il est « de demande d'importation de flacon ».