前提・実現したいこと
Flaskで作成しているwebアプリにログイン機能を実装したい。
DBはpostgreSQL、フレームワークはFlaskを用いています。
発生している問題・エラーメッセージ
/signupにアクセスは出来るものの、usernameとpasswordを入力し、「送信」を押すと下記のエラーが出てしまいます。原因と解決方法を教えていただければ嬉しいです。よろしくお願いいたします。
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "user" does not exist LINE 1: INSERT INTO "user" (username, password) VALUES ('t', 'sha256... ^ [SQL: INSERT INTO "user" (username, password) VALUES (%(username)s, %(password)s) RETURNING "user".id] [parameters: {'username': 't', 'password': 'sha256$256g8V7vekMAAADC$bd440dd7dfecfcb7e1cbc3283238f3e1d41a0cd8d1d4d5fc43a9638e624f1066'}] (Background on this error at: https://sqlalche.me/e/14/f405)
該当のソースコード
python
1from flask import Flask, render_template, request, redirect, session 2from flask_sqlalchemy import SQLAlchemy 3from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required 4from werkzeug.security import generate_password_hash, check_password_hash 5import psycopg2 6import reload 7import random 8 9app = Flask(__name__) 10app.config['SECRET_KEY'] = 'xxxxxx' 11app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///shikaq.db' 12app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 13db = SQLAlchemy(app) 14 15login_manager = LoginManager() 16login_manager.init_app(app) 17 18 19@login_manager.user_loader 20def load_user(user_id): 21 return User.query.get(int(user_id)) 22 23 24class User(UserMixin, db.Model): 25 id = db.Column(db.Integer, primary_key=True) 26 username = db.Column(db.String(50), nullable=False, unique=True) 27 password = db.Column(db.String(25)) 28 29@app.route('/signup', methods=['GET', 'POST']) 30def signup(): 31 if request.method == "POST": 32 username = request.form.get('username') 33 password = request.form.get('password') 34 # Userのインスタンスを作成 35 user = User(username=username, password=generate_password_hash(password, method='sha256')) 36 db.session.add(user) 37 db.session.commit() 38 return redirect('/login') 39 else: 40 return render_template('signup.html') 41 42 43@app.route('/login', methods=['GET', 'POST']) 44def login(): 45 if request.method == "POST": 46 username = request.form.get('username') 47 password = request.form.get('password') 48 # Userテーブルからusernameに一致するユーザを取得 49 user = User.query.filter_by(username=username).first() 50 if check_password_hash(user.password, password): 51 login_user(user) 52 return redirect('/') 53 else: 54 return render_template('login.html') 55 56 57@app.route('/logout') 58@login_required 59def logout(): 60 logout_user() 61 return redirect('/login')
試したこと
https://docs.sqlalchemy.org/en/14/errors.html#error-f405
エラーメッセージを読み、DBとの接続が上手くいっていないのは理解したのですが、原因、解決方法が分からず質問させていただいています。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。