Задать вопрос

В чем ошибка при передаче объекта в базу данных?

При отправке данных из формы выдает ошибку, изучаю фласк один день, поэтому абсолютно не понимаю в чем проблема и прошу сильно меня не буллить.
from flask import Flask, render_template, url_for, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


class Article(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    intro = db.Column(db.String(300), nullable=False)
    text = db.Column(db.Text, nullable=False)
    day = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return '<Article %r>' % self.id


db.create_all()
db.session.commit()


@app.route('/')
@app.route('/home')
def index():
    return render_template("index.html")


@app.route('/create_article', methods=['POST', 'GET'])
def create_article():
    if request.method == "POST":
        title = request.form['title']
        intro = request.form['intro']
        text = request.form['text']

        article = Article(title=title, intro=intro, text=text)

        try:
            db.session.add(article)
            db.session.commit()
            return redirect('/create_article')
        except Exception:
            return 'Error'
    else:
        return render_template("create_article.html")


if __name__ == "__main__":
    app.run(debug=True)


'create_article.html' -
<div class="container"
    <h1>Добавление статьи</h1>
    <form method="post">
        <input type="text" name="title" id="title" class="form-control"><br>
        <textarea name="intro" id="intro" class="form-control"></textarea><br>
        <textarea name="text" id="text" class="form-control"></textarea><br>
        <input type="submit" class="btn btn-success" value="Отправить">
    </form>
</div>

Ошибка -
5ed968e8a1f43606789134.png
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
skipirich
@skipirich
проходил мимо
Похоже у тебя таблицы не созданы.
перед первым роутом добавь
db.create_all()
db.session.commit()
Вот так
db.create_all()
db.session.commit()

@app.route('/')
@app.route('/home')


Да и такой обработчик исключений except Exception: - плохая практика
Ответ написан
Ваш ответ на вопрос

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

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