flask项目框架搭建

devtools/2024/10/22 6:53:46/

目录结构

image-20241009161857636

blueprints

python包,蓝图文件,相当于路由组的概念,方便模块化开发

image-20241009162300635

例如auth.py文件

python">from flask import Blueprint, render_templatebp = Blueprint("auth", __name__, url_prefix="/auth")@bp.route("/login")
def login():pass@bp.route("/register")
def register():return render_template("register.html")

如果想访问register.html页面

那么请求url就是:ip:port/auth/register

app.py文件中需要进行初始化蓝图文件

python">from flask import Flask
from blueprints.qa import bp as qa_bp
from blueprints.auth import bp as auth_bpapp = Flask(__name__)app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)if __name__ == '__main__':app.run()
migrations

数据库迁移产生的包,其中包含迁移的脚本

由迁移三部曲生成:

第一

python">flask db init

第二(识别ORM模型的改变,生成迁移脚本)

python">flask db migrate

第三(运行迁移脚本,同步到数据库中)

python">flask db upgrade
static

存放静态文件的包,其中存放js,css,images等

templates

存放html文件

app.py

‌Flask的app.py文件是Flask框架中的核心应用程序类App的实现,包含了Flask应用程序的基本结构和核心功能。‌该文件定义了Flask应用程序的基本配置、路由注册、错误处理、请求响应处理以及扩展初始化等重要功能‌。

具体来说,app.py文件的作用包括以下几个方面:

‌配置管理‌:设置Flask应用程序的基本配置,如开启debug模式、设置密钥等‌。
‌路由注册‌:通过装饰器和类方法注册路由,定义应用程序的URL结构和处理函数‌。
‌错误处理‌:注册错误处理函数,定义当应用程序发生错误时的处理逻辑‌。
‌请求/响应处理‌:实现请求和响应的处理方法,包括路由函数、错误处理函数、视图方法等‌。
‌扩展初始化‌:初始化Flask扩展,如SQLAlchemy、Werkzeug、Jinja2等,以添加额外的功能和支持‌。

config.py

负责配置信息,例如数据库配置,邮件配置等

python"># 配置数据库信息
HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'liu_oa'
USERNAME = 'root'
PASSWORD = 'xxxxxx'
DB_URI = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4'
SQLALCHEMY_DATABASE_URI = DB_URI
exts.py

‌Flask中的exts.py文件主要用于解决第三方库的循环引用问题。‌ exts.py文件通过集中管理第三方库的导入,避免了在主程序和其他文件之间形成循环引用,从而简化了代码结构并提高了代码的可维护性‌。

具体来说,exts.py文件通常用于保存数据库和其他第三方库的初始化代码。由于数据库操作和其他第三方库的调用可能会在多个文件中进行,直接在这些文件中导入可能会导致循环引用的问题。通过将这部分代码集中放在exts.py文件中,可以有效地解决这个问题。

python"># 这个文件的目的是为了解决循环引用
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Maildb = SQLAlchemy()
mail = Mail()
models.py

负责模型的定义,和数据库表映射

python">from exts import db
from datetime import datetimeclass UserModel(db.Model):__tablename__ = "user"id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(100), nullable=False)password = db.Column(db.String(100), nullable=False)email = db.Column(db.String(100), nullable=False, unique=True)join_time = db.Column(db.DateTime, default=datetime.now)
项目地址

https://gitee.com/yohoo-just-play/liu_oa/


http://www.ppmy.cn/devtools/125541.html

相关文章

R语言:ERGM指数随机图模型4:缺失值处理

文章目录 缺失数据可用的ERGM变量缺失数据 区分没有联系和不知道是否存在联系(即数据缺失Missing data)这两种情况是很重要的。前者是观察到的零,而后者是未被观察到的。我们不应该将这两种情况都编码为“0”。只要我们将数据识别为缺失数据,“ergm”包就能适当地识别并处…

Vue环境安装以及配置

这里写目录标题 前言一、前置要求1.安装Node.js2. 安装VScode 二、创建全局安装目录和缓存日志目录三、配置环境变量四、权限五、配置镜像六、vscode插件1. Vue-Offical2. Vue 3 Snippets3. Path Intellisense4. Auto Import5. Auto Close Tag6. Auto Rename Tag7.GitLens总结 …

基于PHP+uniapp的民宿预订系统的微信小程序设计与实现 ea9i3

目录 项目介绍技术栈和环境说明具体实现截图php技术介绍文件解析微信开发者工具HBuilderXuniapp开发技术简介解决的思路性能/安全/负载方面数据访问方式PHP核心代码部分展示代码目录结构解析系统测试详细视频演示源码获取 项目介绍 总体上看,Android的民宿预订系统…

<Linux> 线程安全

目录 文章目录 一、Linux线程互斥 1. 进程线程间的互斥相关背景概念 2. 互斥量mutex 3. 互斥量接口 初始化互斥量 动静态分配 销毁互斥量 互斥量加锁 互斥量解锁 4. 互斥量实现原理 5. 简单封装互斥量 二、可重入与线程安全 1. 概念 1.1 可重入 1.2 线程安全 2. 常见的线程不…

Linux系统和数据库常用的命令2

Linux系统和数据库常用的命令2 1、两台Linux机器ssh免密登录 client端登录server端需要免密,只需把公钥发送到server就可,会在server端生成一个authorized_keys文件 # 108机器上[rootclient ~]# ssh-keygen -t rsa // 非对称算法 Generating public/…

Nginx在Windows Server下的启动脚本

Nginx在Windows Server下的快捷运行脚本 使用时记得修改NGINX_DIR路径 ECHO OFF CHCP 65001 SET NGINX_DIRD:\software\Nginx\ color 0a TITLE Nginx Management GOTO MENU :MENU CLS ECHO. ECHO. * * * * Nginx Management * * * * * * * * * * * ECHO. * * EC…

uniapp学习(004-1 组件 Part.2生命周期)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第31p-第p35的内容 文章目录 组件生命周期我们主要使用的三种生命周期setup(创建组件时执行)不可以操作dom节点…

C++的类和动态内存分配(深拷贝与浅拷贝)并实现自己的string类

首先&#xff0c;我们先写一个并不完美的类&#xff1a; #include<iostream> #include<cstring> using namespace std;class Mystring{private:char *p;int len;static int num;friend ostream& operator<<(ostream& os, const Mystring& c);pu…