Použití populate_obj WTForms' () metodu s Flask mikro rámci

hlasů
5

Mám šablonu, která umožňuje uživateli upravovat své uživatelské informace.

<form method=post>
    <table>
        <tr>
            <td>Username:</td>
            <td>{{user['username']}}</td>
        </tr>
        <tr>
            <td>New Password:</td>
            <td> <input type=password name=password></td>
            <td>{% if form.password.errors %} `form`.`password`.`errors` {% endif %}<td>
        </tr>
        <tr>
            <td>Re-enter Password:</td>
            <td> <input type=password name=confirm_password>
            </td>
        </tr>
        <input type='hidden' name='username' value={{user['username']}}>
        <tr>
            <td><input type=submit value=Submit></td>
        </tr>
    </table>
</form>

Mám také funkci zobrazení pro vyřizování takových úprav uživatelem. Databáze V současné době jsem pomocí je MongoDB s MongoKit modulu. Byl jsem schopen udělat až do této doby ve funkci zobrazení, ale bez úspěchu pouze.

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)

Jdu přes populate_obj (obj) pro tento účel. Nemohl jsem najít velkou pomoc v této záležitosti. Co mám dělat, aby si populate_obj()práci?

Položena 01/06/2011 v 06:18
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
6

Používáte Flask-WTF ? Pokud ano, podívejte se na následující ukázkový kód:

https://github.com/sean-/flask-skeleton/blob/master/skeleton/modules/aaa/views.py#L13

Konkrétně byste:

def edit():
    form = UserForm()
    if form.validate_on_submit():
        # Commit your form data

Sečteno a podtrženo, pokud používáte Flask-WTF, nejsem si jistý, co vaše otázka je. Pokud nepoužíváte Flask-WTF, použijte Flask-WTF.

Odpovězeno 01/06/2011 v 19:38
zdroj uživatelem

hlasů
15

UserFormměly být request.formpředány do něj pro vyplnění s hodnotami dostupnými v požadavku POST (pokud existuje).

form = UserForm(request.form, obj=user)
Odpovězeno 02/06/2011 v 01:16
zdroj uživatelem

hlasů
1

V případě baňky-WTF můžete psát jako

form = UserForm(obj=user)

Thant bude fungovat!

Odpovězeno 14/12/2016 v 04:44
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more