FileField в FlaskForm всегда выдает значение типа string

Обработчик формы

@movie_blueprint.route("/add_movie", methods=["POST", "GET"])
def add_movie():
    form = AddFilm()
    if request.method == 'POST':
        m = Movie()
        session = db_session.create_session()
        m.name = form.name.data
        m.genre = form.genre.data
        m.description = form.description.data
        m.year = form.year.data
        file = form.poster.data
        session.add(m)
        session.commit()
        path = os.path.abspath(os.path.join("app/static/posters", f"{m.id}.jpg"))
        file.save(path)
        return redirect('/')
    return render_template("add_film.html", form=form)

html

    {% block form %}
<form class="login-form" action="" method="post">
    <h1>Add a movie</h1>
    <p>
        {{ form.name.label }}<br>
        {{ form.name(class="form-control", type="name") }}<br>
        {% for error in form.name.errors %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
    {% endfor %}
    </p>
    <p>
        {{ form.genre.label }}<br>
        {{ form.genre(class="form-control", type="genre") }}<br>
        {% for error in form.genre.errors %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
    {% endfor %}
    </p>

    <p>
        {{ form.year.label }}<br>
        {{ form.year(class="form-control", type="year") }}<br>
        {% for error in form.year.errors %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
    {% endfor %}
    </p>

    <p>
        {{ form.description.label }}<br>
        {{ form.description(class="form-control", type="description") }}<br>
        {% for error in form.description.errors %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
    {% endfor %}
    </p>
    <p>
        {{ form.poster.label }}<br>
        {{ form.poster(class="form-control", type="file") }}<br>
        {% for error in form.poster.errors %}
    <div class="alert alert-danger" role="alert">
        {{ error }}
    </div>
    {% endfor %}
    </p>
    <p>{{ form.submit(type="submit", class="btn btn-dark") }}</p>
    <div>{{ message }}</div>
</form>
{% endblock %}

Flask Form

class AddFilm(FlaskForm):
    name = StringField("Name", validators=[DataRequired()])
    genre = StringField("Genre", validators=[DataRequired()])
    year = IntegerField("Year", validators=[DataRequired()])
    description = TextAreaField("Description")
    poster = FileField("Poster")
    submit = SubmitField("Add Movie")

Ответы (0 шт):