@AliminVerckon

В чём проблема?

Добавление
@app.route('/docs_add', methods=['POST', "GET"])
def DAdd():
    if request.method == 'POST':
        file = request.files['files']
        if file:
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    forms = AddDocsForm()
    if forms.validate_on_submit():
        do = Docs(name_doc=forms.name, files=os.path.join(app.config['UPLOAD_FOLDER'], filename), format_id=forms.format_id)
        db.session.add(do)
        db.session.commit()
        flash("Success: Записано")
    else:
        flash("Error: Не удалось записать данные")
    return render_template('/DAdd.html', title="Добавление документов"
)

Форма
class AddDocsForm(FlaskForm):
    name_doc = StringField('Name', validators=[DataRequired()])
    files = StringField('File', validators=[DataRequired()])
    format_id = IntegerField('Format id', validators=[DataRequired()])
    submit = SubmitField('Submit')

Шаблон
<form enctype="multipart/form-data" method="post">
        <div class="row">
            <div class="col-lg-5">
                <h4>Имя</h4>
                <input class="form-control form-control-lg" type="text", name="name_doc">
            </div>
            <div class="col-lg-5">
                <h4>Файл</h4>
                <input class="form-control form-control-lg" type="file", name="files">
            </div>
            <div class="col-lg-2">
                <h4>Формат</h4>
                <input class="form-control form-control-lg" type="number" name="format_id">
            </div>
        </div>
        <input class="form-control form-control-lg" type="submit" name="submit">
    </form>
    <div class="container good">
        {% with messages = get_flashed_messages() %}
            {% if messages %}
                <ul class=flashes>
                    {% for message in messages %}
                        <li>{{ message }}</li>
                    {% endfor %}
                </ul>
            {% endif %}
        {% endwith %}
    </div>

Модель
class Docs(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name_doc = db.Column(db.String, index=True, nullable=True)
    files = db.Column(db.String, index=True, nullable=True)
    format_id = db.Column(db.Integer, db.ForeignKey('format.id'))

    def __repr__(self):
        return '<Document {}>'.format(self.name_doc)

Проблема: При добавлении данные не добавляются в бд, файлы не сохраняются методом .save()
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
Wispik
@Wispik
1. Получать данные из формы нужно так:
forms.name_doc.data
2. У тебя в форме поле name_doc, а в коде ты к name обращаешься name_doc=forms.name
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы