flask项目框架搭建

news2024/11/20 3:29:37

目录结构

image-20241009161857636

blueprints

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

image-20241009162300635

例如auth.py文件

from flask import Blueprint, render_template

bp = 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文件中需要进行初始化蓝图文件

from flask import Flask
from blueprints.qa import bp as qa_bp
from blueprints.auth import bp as auth_bp

app = Flask(__name__)

app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)



if __name__ == '__main__':
    app.run()

migrations

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

由迁移三部曲生成:

第一

flask db init

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

flask db migrate

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

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

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

# 配置数据库信息
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文件中,可以有效地解决这个问题。

# 这个文件的目的是为了解决循环引用
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail

db = SQLAlchemy()
mail = Mail()
models.py

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

from exts import db
from datetime import datetime


class 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.coloradmin.cn/o/2199858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

李沐 X 动手学深度学习 深度学习介绍 学习笔记

x轴是不同的模式:符号学---概率模型---机器学习y轴是我们想做的东西(问题领域):感知(了解这是什么东西,能看见这个物体)---(做)推理(基于我看到的东西想象未来…

揭秘猫咪掉毛的真实原因有哪些?掉毛飞毛宠物空气净化器来救援!

作为三猫家庭,日常家里的毛发、异味一直是困扰我很久的难题。最近窗外的世界柳絮满天飘,家里猫毛满飞,养猫家庭应该都不陌生吧,鼻子嘴巴甚至是眼睛里总感觉有猫毛。不管猫砂换的多勤快,也总能闻到阵阵臭味!…

【git】git add时warning:LF will replaced by CRLF

git add时warning:LF will replaced by CRLF 一,问题现象二,问题原因&解决方法 一,问题现象 二,问题原因&解决方法 这个警告的原因是 Git 在进行文件添加操作时,发现行尾结束符不一致。 在不同的…

Klick‘r3.0.4 |智能自动点击,高效省力

Klick’r 是一款专为 Android 设计的开源自动点击工具,能识别屏幕上的图像并进行相应操作。支持游戏中的自动点击、应用测试及日常任务自动化。 大小:27M 百度网盘:https://pan.baidu.com/s/1881Zfevph6_2Zhdc-H_R4A?pwdolxt 夸克网盘&…

定点数和浮点数的详细介绍(一)定义、范围、位宽

1.定点数 1.1定点数描述 定点数包括定点小数(纯小数)、定点整数(纯整数)、整数和小数位数固定的实数。 1.2定点小数: 小数点默认在符号位后面,首位为符号位,其他为数值位(在用二进制代表小数时,例如0xFF,就表示0.5+0.25+0.125+0.0625+0.03125........) 例如,用…

【p2p、分布式,区块链笔记 UPNP】: Libupnp的线程池简述

线程池在网络编程中是一个关键的组成部分,尤其是处理高并发请求时,线程池可以显著提高系统的性能和资源利用效率。它的关键组成部分包括以下几个要素:任务队列:一个(或多个)用于存放待执行任务的队列。任务…

简单花20分钟学会top 命令手册 (linux上的任务管理器)

1. 介绍 top 是一个常用的 Linux 命令行工具,用于实时监视系统资源和进程的运行情况。用户可以通过 top 命令查看系统的 CPU 使用率、内存占用情况、进程列表等重要信息,帮助快速了解系统运行状态并进行性能监控。该工具可以认为相当于windows上的任务管…

什么是MAC地址?有必要隐藏MAC地址吗?

你是否曾经停下来思考,每当你上网时,你的数字足迹可能会泄露你的个人信息?可能你会问,MAC地址是什么?简单来说,每台联网的电脑MAC地址都是独一无二的,就像是你设备在网络世界中的身份证。它能帮…

MySQL多表查询案例

先看我的表数据 dept表 emp表 salgrade表 student表 course表 student_course表 1. 查询员工的姓名, 年龄, 职位, 部门信息(隐式内连接) -- 表:emp, dept -- 连接条件 emp.dept_id dept.id …

那些年,我们一起追过的函数:揭秘数学世界里的‘网红’们

在数学中,函数是一种特殊的关系,它将一个集合中的每个元素(称为自变量或输入)映射到另一个集合中的唯一元素(称为因变量或输出)。根据函数的性质和定义域、值域的不同,可以将函数分为多种类型。…

七氟烷麻醉药市场研究:未来几年年复合增长率CAGR为4.2%

七氟烷是一种吸入麻醉剂,用于在外科手术过程中诱导和维持全身麻醉。七氟烷是一种挥发性麻醉剂,常用于在外科手术过程中诱导和维持全身麻醉。它因起效快和作用消失快而受到青睐,是成人和儿科患者的理想选择。七氟烷通常通过吸入起作用&#xf…

如何使用Colly库进行大规模数据抓取?

在互联网时代,数据的价值日益凸显,大规模数据抓取成为获取信息的重要手段。Go语言因其高效的并发处理能力,成为编写大规模爬虫的首选语言。Colly库作为Go语言中一个轻量级且功能强大的爬虫框架,能够满足大规模数据抓取的需求。本文…

开源 Three.js 案例及入门教程分享

更多three.js学习资料分享https://www.wjx.cn/vm/OaQEBVS.aspx# 01.Three.js 雨和屋顶 在线预览: https://codepen.io/prisoner849/full/yLWMLjK 源码: https://codepen.io/prisoner849/pen/yLWMLjK 02.Three.js 有趣的 3D 航行 源码: …

【动态网站资源保存下载】

文章目录 概要解决思路技术细节小结 概要 我们在网上浏览网站时,经常有这样的需求:将浏览的网页保存下来,即使无网的情况下也可以继续浏览。比如一些教育类网站的PPT,内容为HTML格式的,无法作为PPT格式下载下来&#…

鸿蒙NEXT开始公测,哪些机型可以升级?鸿蒙版微信界面简洁

华为 Harmony OS NEXT 于10月8日正式开启公测,对鸿蒙 NEXT 系统感兴趣,想要第一时间尝鲜鸿蒙系统的话,千万不要错过本篇文章! 哪些手机可以参与鸿蒙 NEXT 公测? 首批参与鸿蒙 NEXT 公测的机型有华为 Mate 60 系列、华…

大型企业的云容器和javaee的关联技术

目前在企业中,尤其是大型互联网企业中,云容器越来越重要,原因是:云容器的架构能够提供一整套的,自动提交,自动打包,自动部署,自动重启,动态配置的解决方案 云容器的整体结…

21亿收官,2024年国庆档没有抱怨市场的资格

截至10月7日晚上8点,2024年国庆档票房已接近21亿大关,但成绩基本定格于此,较去年减少了7亿,回落至2018年水准。 在经历了暑假档票房较去年大幅下滑、中秋档票房回归至2014年水平后,国内电影市场对于国庆档表现出一种复…

【Fine-Tuning】大模型微调理论及方法, PytorchHuggingFace微调实战

Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战 文章目录 Fine-Tuning: 大模型微调理论及方法, Pytorch&HuggingFace微调实战1. 什么是微调(1) 为什么要进行微调(2) 经典简单例子:情感分析任务背景微调 (3) 为什么微调work, 理论解释下 2…

《2024世界机器人报告》:中国为全球最大市场

国际机器人联合会(IFR)在9月24日最新发布的《世界机器人报告》中表示,全球有约428万台机器人在工厂运行,同比增长10%。工业机器人年安装量连续第三年超过50万台,在2023年新部署的工业机器人中,有70%在亚洲&…

基于Springboot+Vue的物业智慧系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…