优秀的编程知识分享平台

网站首页 > 技术文章 正文

如何组织你的Flask项目?(联合国教科文组织的三大遗产项目分别是)

nanyue 2024-10-15 11:33:32 技术文章 7 ℃

在Flask中,通常不强制遵循MVC模式,因为它是一个灵活的微框架。然而,你可以模仿MVC的结构来组织你的Flask项目。以下是如何在Flask项目中模拟MVC结构的一个例子:

项目目录结构

my_flask_app/

├── app.py

├── config.py

├── models.py

├── routes.py

├── static/

│ ├── css/

│ ├── js/

│ └── images/

├── templates/

│ ├── base.html

│ ├── index.html

│ └── user/

│ ├── register.html

│ ├── login.html

│ └── profile.html

└── venv/


主要文件和模块职责

app.py: 这是主要的入口点文件,通常包含创建和运行Flask应用的实例。

config.py: 配置文件,可以存放数据库配置、密钥、上传文件设置等。

models.py: 模型相关的代码,负责与数据库交互。

routes.py: 路由定义的地方,包含了所有的视图函数。

static/: 存放前端静态文件,如CSS样式表、JavaScript文件和图片。

templates/: 存放Jinja2模板文件,用于生成HTML页面。

模型 (Model)

在models.py文件中,你会有数据库模型的定义。例如,你可能有一个User模型来表示用户数据:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(64), unique=True, nullable=False)

password_hash = db.Column(db.String(128), nullable=False)

# 其他字段...


视图 (View)

在routes.py文件中,你将定义URL规则以及处理这些URL的视图函数。例如:

from flask import render_template, url_for, redirect, request

from app import app

from models import User

@app.route('/')

def index():

return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])

def login():

# 登录逻辑...

return render_template('user/login.html')


视图 (Template)

在templates文件夹中,你会有HTML模板文件。例如,一个简单的登录页面login.html可能看起来像这样:


Login


Login Form

{{ form.hidden_tag() }}

{{ form.username.label }}

{{ form.username(size=20) }}

{{ form.password.label }}

{{ form.password }}


请注意,虽然这个结构模仿了MVC,但在Flask中,模型和视图通常不会被封装在单独的类或控制器中,而是直接在models.py和routes.py文件中定义。视图函数通常非常简洁,并且直接处理业务逻辑和模板渲染。

最近发表
标签列表