在设置db_PARAMS之前,不应该启动数据库,例如
SQLALCHEMY_DATABASE_URI
。这是因为
SQLAlchemy(app)
加载所有配置变量。
在您的情况下,您正在初始化
db = SQLAlchemy(app)
尝试加载
SQLALCHEMY_DATABASE_URI
(尚未设置),所以您看到了错误。
更新代码:
from flask import Flask, render_template, url_for, redirect
from flask_sqlalchemy import SQLAlchemy
from flask_login import UserMixin, login_user, LoginManager, login_required, logout_user, current_user
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import InputRequired, Length, ValidationError
from flask_bcrypt import Bcrypt
app = Flask(__name__)
app.config['SECRET_KEY'] = 'thisisasecretkey' # also move secret key to top.
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
# move here
db = SQLAlchemy(app)
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), nullable=False, unique=True)
password = db.Column(db.String(80), nullable=False)
@app.route('/')
def home():
return render_template('base.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
return render_template('login.html')
@ app.route('/register', methods=['GET', 'POST'])
def register():
return render_template('register.html')
if __name__ == "__main__":
app.run(debug=True)