Не повторяет форму html с данными - PullRequest
0 голосов
/ 14 апреля 2020

Как можно предварительно заполнить форму данными, поступающими из базы данных?

Использование MySQL У меня есть переменная post, и я хочу получить заголовок и postContent для заполнения в форме.

mydb = mysql.cursor(dictionary=True)
query = "SELECT title, postContent FROM posts WHERE id=%s"
query_values = (post_id,)
mydb.execute(query, query_values)
post = mydb.fetchone()

form = PostEditForm(obj=post)
form.populate_obj(post)

if request.method == "GET":
    return render_template('/posts/edit.html', post=post, form=form)

Моя форма выглядит следующим образом под forms.py

class PostEditForm(FlaskForm):

    title = StringField('Title', id="post-title")
    postContent = TextAreaField('Content', id="post-content")
    submit = SubmitField('Update')

Тогда HTML выглядит так:

<form method="post" action="{{ url_for('post_single', post_id=post['id']) }}" enctype="multipart/form-data">
        {{ form.csrf_token }}
        <h1>{{ post["id"] }}</h1>
        <div class="form-group">
            <legend>{{ form.title.label }}</legend>
            {{ form.title(class="form-control", size=20) }}
        </div>
        <div class="form-group">
            <legend>{{ form.postContent.label }}</legend>
            {{ form.postContent(class="form-control") }}
        </div>
        <div class="form-group btn-with-margin">
            {{ form.submit(class="btn btn-primary") }}
        </div>
</form>

Когда я go в браузере я вижу следующую ошибку:

AttributeError: 'dict' object has no attribute 'title'

Как заполнить форму данными?

...