欢迎光临
我们一直在努力

Flask 笔记二:先把项目结构搭清楚

很多人学 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.index
    • admin.index

    跳转时要用:

    url_for("home.index")

    url_for("admin.index")

    不要想当然地写 "index"。

    坑 3:改代码后页面没变化

    开发时建议开:

    app.run(debug=True)

    这样改代码后会自动重载。
    如果还是不对,先重启一次服务。


    8. 你现在应该掌握什么

    看完这篇,你不需要会数据库、登录、部署。
    只要先明白这 4 件事:

  • Flask 应用从 Flask(__name__) 开始
  • 路由用 @route 绑定 URL
  • Blueprint 用来拆分模块
  • 模板放在 templates/ 里
  • 这就够你搭一个「能看、能点、能分前台后台」的小网站了。


    赞(0)
    未经允许不得转载:171主机测评 » Flask 笔记二:先把项目结构搭清楚
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址