引入Flask-Login后Flask返回404错误的问题求助
引入Flask-Login后Flask返回404错误的问题求助
各位好,我最近碰到了一个棘手的问题,想请大家帮忙分析下。我正在开发一个基于Flask的博客网站项目,用到了多个路由和不少第三方库。但最近只要一引入并配置Flask-Login(它依赖SQLAlchemy),我的应用就开始返回404错误了。在我的实际项目里Flask-Login用得很频繁,用来处理很多权限控制相关的逻辑,之前运行都正常,突然就出问题了,实在摸不着头绪。
下面是我的最小可复现示例(MRE)代码:
from flask import Flask, render_template, request from flask_login import UserMixin, LoginManager, current_user from flask_sqlalchemy import SQLAlchemy from sqlalchemy.orm import relationship, DeclarativeBase, Mapped, mapped_column from sqlalchemy import Integer, String, Text, ForeignKey from typing import List app = Flask(__name__) app.config['SECRET_KEY'] = '8BYkEfBA6O6donzWlSihBXox7C0sKR6b' login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def load_user(user_id): return db.get_or_404(User, user_id) class Base(DeclarativeBase): pass app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///posts.db' db = SQLAlchemy(model_class=Base) db.init_app(app) class BlogPost(db.Model): __tablename__ = "blog_posts" id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String(250), unique=True, nullable=False) subtitle: Mapped[str] = mapped_column(String(250), nullable=False) date: Mapped[str] = mapped_column(String(250), nullable=False) body: Mapped[str] = mapped_column(Text, nullable=False) author = relationship("User", back_populates='posts') img_url: Mapped[str] = mapped_column(String(250), nullable=False) author_id = db.Column(Integer, ForeignKey('users.id')) class User(UserMixin, db.Model): __tablename__ = "users" id: Mapped[int] = mapped_column(Integer, primary_key=True) email: Mapped[str] = mapped_column(String, unique=True, nullable=False) password: Mapped[str] = mapped_column(String, nullable=False) name: Mapped[str] = mapped_column(String, nullable=False) posts: Mapped[List["BlogPost"]] = relationship(back_populates="author") with app.app_context(): db.create_all() @app.route("/") def home(): return render_template('test.html')
我排查过程中发现,只要去掉Flask-Login的初始化和相关代码,访问首页就正常;但一加上就会返回404。我已经确认了首页的路由@app.route("/")是正确定义的,模板文件test.html也放在了templates目录下(Flask默认的模板路径),实在找不到问题出在哪里了,有没有朋友遇到过类似的情况或者能帮我指出可能的问题点?
内容来源于stack exchange
相关产品推荐
相关产品推荐

