8
votes

Utilisation de la méthode population_obj () de WTForms avec le flacon micro-cadre

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)


2 commentaires

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? . En outre, l'objet utilisateur obtenu de cette manière est autorisé à passer ou non.


3 Réponses :


6
votes

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


2 commentaires

"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 () :)



16
votes

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)


3 commentaires

Seulement avec natif wtforms . L'extra demande.form n'est pas nécessaire avec flacon-wtf .


@Sean - True ... qui fait partie de la raison pour laquelle flacon-wtf est une bonne extension; Il aide à découper la chaudras. Mais l'OP n'utilise pas flacon-wtf , 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 vous ... vous 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 et je vous ai donné un +1 pour cela ;-)).


hochettes 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. : ~]



2
votes

En cas de flacon-wtf, vous pouvez écrire comme

form = UserForm(obj=user)


0 commentaires