J'ai un modèle qui permet à l'utilisateur d'éditer leurs informations utilisateur.
def edit(): username = request.args.get('user') user = User.find_one({'username':username}) # Is this a correct way of doing it? form = UserForm(**what should be placed here?**, obj=user) if request.method == 'POST' and form.validate(): form.populate_obj(user) user.save() return 'updated' return render_template('edituser.html', form=form, user=user)
3 Réponses :
utilisez-vous flacon-wtf ? Si tel est le cas, consultez le code d'exemple suivant:
https://github.com/sean-/flask-skeleton/blob/master/skeleton/modules/aaa/views.py#l13 P>
Spécifiquement, vous le feriez : P>
def edit(): form = UserForm() if form.validate_on_submit(): # Commit your form data
"En bout de ligne, si vous utilisez du flacon-wtf, je ne suis pas sûr de votre question. Si vous n'utilisez pas de flacon-wtf, utilisez du flacon-wtf." Je ne peux pas d'accord sur cette dernière phrase. Si vous n'utilisez pas de flacon-wtf, utilisez le flacon-wtf.
Il est assez difficile de voir ce qui se passe dans cet exemple, car vous faites des choses SQLA personnalisées plutôt que simplement un db.session.commit () code> :)
userform code> doit avoir
request.form.form.form.form.fly est passé à le peupler avec les valeurs disponibles dans la demande de poste (le cas échéant).
form = UserForm(request.form, obj=user)
Seulement avec natif wtforms code>. L'extra
demande.form code> n'est pas nécessaire avec
flacon-wtf code>.
@Sean - True ... qui fait partie de la raison pour laquelle flacon-wtf code> est une bonne extension; Il aide à découper la chaudras. Mais l'OP n'utilise pas
flacon-wtf code>, alors recommandant simplement qu'il utilise, il est quelque peu semblable à suggérer d'utiliser JQuery pour résoudre un problème JavaScript. Cela signifiera que votre problème est résolu pour vous - mais le problème est résolu pour b> vous ... vous b> Je ne sais toujours pas comment résoudre. C'est pourquoi je n'ai donné que le point de faire ce qu'il a besoin de faire ce qu'il a besoin d'utiliser du ballon et des wtforms de manière nue (vous avez déjà fait remarquer très bien les avantages de
flacon-wtf code> et je vous ai donné un +1 pour cela ;-)).
hochettes i> La correction était plus pour les cookies de Google que toute autre chose. Cela dit, si un utilisateur a un problème pendant le développement (Maintenance vs), il est plus facile de suggérer des choses qui facilitent la vie maintenant vs plus tard. : ~]
En cas de flacon-wtf, vous pouvez écrire comme
form = UserForm(obj=user)
Vous devez décrire quelle erreur vous obtenez ou comment les résultats que vous deviendrez diffèrent de vos attentes.
J'espérais si quelqu'un me dirigerait sur ce que je devrais garder où j'ai écrit ce qui devrait être placé ici? B>. En outre, l'objet utilisateur obtenu de cette manière est autorisé à passer ou non.