8

ユーザーがユーザー情報を編集できるテンプレートがあります。

<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>

ユーザーによるそのような編集を処理するためのビュー機能もあります。私が現在使用しているデータベースは、MongoKitモジュールを使用したMongoDBです。これまでのところ、ビュー機能でこれまでしかできませんでしたが、運がありません。

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)

この目的のためにpopulate_obj (obj)を使用しています。この件に関しては、あまり助けがありませんでした。就職するにはどうしたらいいpopulate_obj()ですか?

4

3 に答える 3

17

UserFormrequest.formPOSTリクエストで使用可能な値(存在する場合)を入力するために渡されている必要があります。

form = UserForm(request.form, obj=user)
于 2011-06-02T00:16:57.437 に答える
6

Flask-WTFを使用していますか? その場合は、次のサンプル コードを確認してください。

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

具体的には、次のことを行います。

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

要するに、あなたが を使用している場合Flask-WTF、あなたの質問が何であるかわかりません。を使用していない場合はFlask-WTF、 を使用してFlask-WTFください。

于 2011-06-01T18:38:28.413 に答える
2

Flask-WTF の場合、次のように記述できます。

form = UserForm(obj=user)

タントが効きます!

于 2016-12-14T04:44:25.563 に答える