You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

引入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:14:32