使用python编写web项目,第二节,项目后端的基本结构

上一节小编说了新手使用python写web项目的类型选择,这一节说一下项目的基本结构和同步数据库时可能会出现的问题

在这里先说明一下,这个项目采用的主要技术是flask框架

可以在终端中执行以下命令进行下载,目前小编没有指定版本,也就是默认使用最新版

pip install flask

下面两个截图是小编的项目的基本结构,其中,左图是目录参考,右图是相应的标注

使用python编写web项目,第二节,项目后端的基本结构_第1张图片使用python编写web项目,第二节,项目后端的基本结构_第2张图片

  • 首先是__pycache__目录,这个目录是操作过程中系统自动生成的,不是小编所创建的,所以在这里就不细说了,有兴趣的朋友们可以自己上网去查,对于这个目录,小编只提醒一点,不要删除,否则后面可能会有意想不到的报错
  • 下一个是migrations目录,这个目录是在同步数据库的时候生成的,虽然在这里小编还没有开始编写数据库的部分,但是因为需要对数据库和应用进行同步,所以需要对其进行初始化,也就是第一次同步数据库

下面是第一次同步数据库的操作

提示:在同步数据库之前,需要确保已经安装了migrate模块,没有的可以执行以下命令进行下载

pip install flask-migrate

首先需要在终端中执行以下命令进行初始化,这个命令只有第一次同步的时候需要执行

flask db init

执行这条命令时,可能会出现以下的一些报错

ModuleNotFoundError: No module named 'pymysql'

这个表示找不到名为‘pymysql’的模块,直接在终端中执行以下命令下载即可

pip install pymysql

在初始化时还可能会出现一种情况,说是找不到这个应用,这个需要把项目的启动文件添加到系统的环境变量中去,这里有手动和命令添加两种方法

手动添加:

使用python编写web项目,第二节,项目后端的基本结构_第3张图片

命令添加:

$env:FLASK_APP='filename.py'

对于这个命令希望详细了解的朋友,可以去下面这个网站,去详细的了解一下

flask 中文网:https://flask.github.net.cn/quickstart.html#id2

命令添加仍然是在终端中执行,这里的文件名是项目的启动文件的名字,这里的后缀应该是可以省略的,小编就没写,手动添加的方法如果有不知道位置的,就自己上网去查哈,这里因为小编在之前的学习中就已经添加了,所以这里没有出现这个问题,将这些问题解决后,再次执行初始化的命令就没问题了

初始化完成后就是生成迁移文件了,执行以下命令后,系统会自动检测数据库模型,并生成迁移文件

flask db migrate

再下一步就是同步数据库了

flask db upgrade

如果第一步初始化没有出现问题,后面两步就不太会出现问题了,另外补充一下,虽然不用编写数据库的相关模型,但是需要创建并连接数据库,在同步完数据库之后,数据库中会出现一个alembic_version表,这个表中保存的是数据库历史版本的编号,如果同步数据库时没有创建数据库的模型,那么这个表就是空的

  • 下一个是migrations中的versions目录,这个目录用于存放数据库的迁移文件,在第一次同步完成后会自动生成这个目录,在后续的同步过程中,如果同步成功,就会在这个目录中自动生成数据库历史版本的迁移文件,当然在第一次同步时,因为一般都没有创建数据库模型,所以这个目录里面也是空的
  • 再下一个是stu_mng目录,这个是项目的主要目录,后续的开发工作大多在这下面进行
  • __init__.py文件,这个是初始化文件,会把文件所在的目录变成一个包文件,以供后续的开发使用,这个文件和类里面的初始化方法一样,在导入文件所在的目录时,会自动执行这个文件里面的代码,因此可以在这里编写一些起着类似于初始化作用的代码,也包括设置一些初始的参数
  • config.py文件,这个是项目的配置文件,一般在这里编写整个项目的全局配置,数据库的相关配置就在这里编写
  • manager.py文件,这个是项目的管理文件,也是入口文件,项目从这里启动
  • README.txt文件,这个是项目的说明文件,相当于说明书,这是一个纯文本文件,不是python文件,所以没有代码,只有关于项目的说明性文本内容

这些是这个项目的基本结构,在后续的开发中肯定是会创建新的目录和文件的,最后要提醒一下,和小编所选类型相同的项目,可以参考这个布局,不同的不建议模仿使用

最后,小编也是一个新人,刚发布作品没多久,水平不高,需要鼓励,所以麻烦路过的朋友点赞,收藏加关注,支持一下,谢谢

你可能感兴趣的:(前端,python,flask,vscode)