Flask sqlite ничего не возвращает, когда я вызываю функцию
sqlite3
.tables
Поэтому я предполагаю, что она пуста, однако, когда я набираю
User.query.all()
, я вижу, что таблицы существуют.
Все работало отлично, пока я не попытался добавить расширение Flask -migrate. Так как раньше он работал отлично, и я не изменил код, связанный с моделями или sqlite, я не думаю, что это из-за ошибки кода.
Также я не могу войти на сайт, он возвращается (опубликовать 200 успешно, но я не могу войти), однако я МОГУ зарегистрироваться успешно. Все произошло после того, как я реализовал функцию flask -migrate, но я удалил все, что связано с миграцией flask, но проблема остается той же. Я пытался много гуглить, но не смог найти ничего, что решило бы его.
Сам код не выдает никакой ошибки
Вот мой init
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
app = Flask(__name__)
app.config['SECRET_KEY'] = 'thisissecretkey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SECURITY_PASSWORD_SALT'] = 'thisispasswordsalt'
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = "sign_in"
login_manager.login_message_category = 'info'
from debugger import routes
вот файл models.py
from . import db,login_manager
from datetime import datetime
from flask_security import Security, SQLAlchemyUserDatastore, login_required,UserMixin, RoleMixin
from run import app
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
user_roles = db.Table('user_roles',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))
class User(db.Model,UserMixin):
id = db.Column(db.Integer,primary_key=True)
first_name = db.Column(db.String(20),nullable=False)
last_name = db.Column(db.String(20),nullable=False)
email = db.Column(db.String(100), unique=True, nullable=False)
is_active = db.Column(db.Boolean())
password = db.Column(db.String(50),nullable=False)
user_role = db.relationship('Role',secondary='user_roles',backref='user',lazy='dynamic')
def is_active(self):
return True
def __repr__(self):
return f"User('{self.first_name}',{self.last_name}','{self.email}','{self.password}')"
class Role(db.Model,RoleMixin):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(40), unique=True)
def __repr__(self):
return f"User('{self.name}')"
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
и файл маршрутов:
@app.route('/sign-in',methods=['GET','POST'])
def sign_in():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user,remember=form.remember.data)
next_page = request.args.get('next')
return redirect(next_page) if next_page else redirect(url_for('index'))
else:
flash('Login Unsuccessful.','danger')
return render_template('signin.html',form=form)
run.py
from debugger import app
if __name__ == '__main__':
app.run(debug=True)