很多人学 Flask,第一步是跟着教程写一个 app.py,里面几十行代码,路由、数据库、登录全塞在一起。能跑,但再加几个页面就开始乱。
这篇不讲复杂架构,只讲一件事:Flask 项目怎么从「一个文件」变成「几个文件夹」。下面例子来自我自己的练习项目,但会把具体业务名字都拿掉,只保留 Flask 本身该怎么组织。
1. 先认识 Flask 里最常用的三个概念
① 应用(App)
整个网站的「总入口」。你可以理解成:Flask 程序从这里启动。
from flask import Flask
app = Flask(name)
② 路由(Route)
用户访问某个网址时,该执行哪段代码。
@app.route("/")
def index():
return "Hello"
③ 蓝图(Blueprint)
当路由变多以后,不要全写在一个文件里。Blueprint 就是:把不同模块的路由分开写,再挂到主应用上。
比如:
- 前台页面 → 一个 Blueprint
- 后台管理 → 一个 Blueprint
这样代码不会越堆越长。
2. 入门项目可以这样分文件夹
刚开始不用搞很复杂,下面这种结构就够用了:
myproject/
├── manage.py # 启动文件
├── app/
│ ├── init.py # 创建 Flask 应用
│ ├── models.py # 数据库模型(后面再学)
│ ├── home/ # 前台
│ │ ├── init.py
│ │ └── views.py
│ └── admin/ # 后台
│ ├── init.py
│ └── views.py
你可以把它理解成:
manage.py:负责启动app/__init__.py:负责「组装」home/、admin/:负责「具体页面」
3. 启动文件:manage.py
入门阶段,manage.py 可以非常简单:
from app import app
if name == "main":
app.run(debug=True)
运行:
python manage.py
浏览器打开 http://127.0.0.1:5000 就能看到页面。
4. 主文件:app/__init__.py
这个文件建议只做「组装」,不要写太多业务逻辑。
from flask import Flask
app = Flask(name)
简单配置(入门阶段够用)
app.config"SECRET_KEY" = "dev-secret-key"
注册 Blueprint
from app.home import home
from app.admin import admin
app.register_blueprint(home)
app.register_blueprint(admin, url_prefix="/admin")
这里有两个重点:
- 先创建
app - 再注册 Blueprint
顺序别反了,后面 import 多了不容易报错。
5. Blueprint 怎么写
前台模块 app/home/__init__.py
from flask import Blueprint
home = Blueprint("home", name)
import app.home.views
前台页面 app/home/views.py
from flask import render_template
from app.home import home
@home.route("/")
def index():
return render_template("home/index.html")
后台模块也类似
app/admin/__init__.py:
from flask import Blueprint
admin = Blueprint("admin", name)
import app.admin.views
app/admin/views.py:
from flask import render_template
from app.admin import admin
@admin.route("/")
def index():
return render_template("admin/index.html")
注册时加了:
app.register_blueprint(admin, url_prefix="/admin")
所以后台首页地址是:
/admin/
不是 /。
6. 模板放哪里
Flask 默认模板目录一般是:
app/templates/
例如:
app/templates/
├── home/
│ └── index.html
└── admin/
└── index.html
home/index.html 可以很简单:
<!DOCTYPE html>
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>欢迎来到我的网站</h1>
<a href="/admin/">进入后台</a>
</body>
</html>
到这里,你已经完成了:
- 一个首页
- 一个后台页
- 两个模块分开管理
这对入门来说,已经是很重要的一步了。
7. 新手最容易踩的 3 个坑
坑 1:所有代码都写在一个文件里
刚开始可以,但页面一多就会乱。
建议超过 3 个页面,就开始拆 Blueprint。
坑 2:路由名字重复
Blueprint 里的 endpoint 会自动带上前缀,比如:
home.indexadmin.index
跳转时要用:
url_for("home.index")
url_for("admin.index")
不要想当然地写 "index"。
坑 3:改代码后页面没变化
开发时建议开:
app.run(debug=True)
这样改代码后会自动重载。
如果还是不对,先重启一次服务。
8. 你现在应该掌握什么
看完这篇,你不需要会数据库、登录、部署。
只要先明白这 4 件事:
- Flask 应用从
Flask(__name__)开始 - 路由用
@route绑定 URL - Blueprint 用来拆分模块
- 模板放在
templates/里
这就够你搭一个「能看、能点、能分前台后台」的小网站了。
