【绝对清楚】Flask项目结构(有项目文件夹详细对照说明)

这篇具有很好参考价值的文章主要介绍了【绝对清楚】Flask项目结构(有项目文件夹详细对照说明)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

插个目前实现的登录页面~😄

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

之前看了很多很多的Flask框架的项目结构,了解到它是一个高度灵活的轻量级web框架,意思就是项目的结构不像Django那样有着固定的模式,而是可以根据开发者的爱好进行设计。这也就给想用正儿八经的一种结构写一个网站带来了困扰。好在看了几天的资料后,我大概理清楚了思路,下面进行介绍。

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档
flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

废话不多说,先上我的项目结构(只有把自己的项目结构列出来并讲解清楚,才能至少让他人懂得一种结构),等会会进行详细的介绍。如上图所示,目前我的项目Personalwebsite一共有三个文件夹,分别是app、migrations、tests和两个py文件分别是config.py、manager.py。

这里还要提一下,就是很多人应该和我一样,知道Flask是相当于一个内核的,其本身功能并不多,主要是靠许多的插件来实现丰富的web功能。比如用于等于验证的flask_login,用于连接数据库的flask_alchemy,另外蓝图的开发模式,配置等等这些在开发中经常被提及的名词大家肯定也有所耳闻,那么以上这些到底是什么,我们要如何在项目结构中体现和使用它们呢?我这里不会介绍如何使用它,因为网上已经有很多大佬进行介绍了并且讲的特别清楚,唯一不足的就是没有结合整个项目结构来介绍,会给人一种很突兀的感觉,为什么要在项目中使用这些?它们具体放在项目中的哪些位置?这些是我困惑的地方,也是这篇文章主要要讲的内容。

一、app文件夹

我们知道开发一个网站一般分为三层(第四层就是数据库,存取数据用的),分别是前端的展示页面(这里有大家熟悉的html, css, js等文件)、后端的逻辑页面(用于获取数据库的数据并进行业务逻辑处理,最后把处理好的数据交给前端去渲染展示)和对象关系映射层ORM(这个大家可能没有听过,就是建立一个和数据库的有映射关系的对象,通过这个对象我们就可以直接操纵数据库,而不需要接触SQL语句,这就给开发人员减少了很多压力,也使得后端代码可以少一些SQL语句。)

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

而在app文件夹中就是存放所有这些层次的代码。App下面有static和templates文件夹是对应前端的代码;views文件夹则是对应后端代码(注意这里后端处理业务逻辑的也叫作视图函数);models.py则是存放ORM层的,在里面有许多的类,一个类就对应数据库中的一张表。

static和templates文件夹

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

如图这里我只做了登录的前端页面,分别由login.html和login.css。当然这里还有一个images文件夹存放前端的图片。

Views文件夹

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

这里的views中只有login.py,其实就是处理登录逻辑的一个视图函数。其他的都依次类推,比如要注册,可以设立一个注册的视图函数,也放在views文件夹中。

Models.py

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

App文件夹下的__init__.py

相信大家注意到了在app文件夹下还有一个__init__.py文件,那么这个文件是用来干啥的呢?在__init__.py中,我们需要构建一个flaskapp实例——app。并且在其中实现所有的配置,数据库,登录验证的实例化等等,说白了就是一个初始化的功能。在__init__.py中我们需要初始化一个加载了所有第三方扩展的app。但是不是用来运行app的,运行app的是后面的manager.py文件。

比如上面提到过的登录验证用的flask_login, 管理数据库的flask_alchemy等等,都需要在__init__.py中进行初始化。

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

如图,在__init__.py中,我们从config.py导入了配置类,并且导入了flask_login和flask_alchemy等等用于登录验证和连接数据库,同时我们还导入了Bluepring用于所谓的蓝图注册。

然后我们分别创建了对应的实例化对象如:main蓝图(这个蓝图只是一个实例,在views文件夹下的login.py其实也有蓝图,我还没写好,不然也会在__init__.py中导入),db作为ORM对象管理数据库,login_manager用于登录验证。之后我们构建一个create()函数用于构建app并且对蓝图进行注册,加载配置,创建ORM对象和绑定flask_login。

综上所述,在__init__.py我们的工作就是集成所有的功能,并把这些功能全部加载到最终的app应用中,并提供一个create()函数用于返回这个app。而manager.py就可以调用create()函数来得到具有完整功能的app了。

二、Config.py文件

我们知道flask设置配置文件的方法有很多,我这里采用的是写成一个类的形式。关于flask配置文件的内容可以看这篇博客:

https://blog.csdn.net/weixin_62588253/article/details/128576819

flask项目结构,Flask-web开发,flask,web,python,Powered by 金山文档

如上,我这里配置的信息还比较少,只配置了连接哪个数据库,后续可以在这里添加

三、Manager.py文件

这个文件就是对整个程序进行管理和运行的,但是我还没有写出来。(o(╥﹏╥)o)

四、Migrations文件夹

这个用于存放数据库迁移的一些文件,我也还没写,是看网上博客说有的。大家可以自行查阅

五、Tests文件夹

用于测试程序,我也还没写(o(╥﹏╥)o)。


总结:我认为最关键的就是前面我介绍的app文件夹还有config.py和manager.py,这些是构建项目必须的。其他的是项目做的差不多时需要用的,文章来源地址https://www.toymoban.com/news/detail-787178.html

到了这里,关于【绝对清楚】Flask项目结构(有项目文件夹详细对照说明)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 删除文件夹命令(超详细)

    欢迎大家关注公众号【小白技术圈】,发送B02 or b02 领取Linux学习资料大礼包! 如果要删除一个空的文件夹,非常简单。打开终端,执行以下命令: 例如,如果要删除名为 “my_folder” 的空文件夹,命令如下: 要删除一个非空文件夹,我们需要使用 rm 命令,并结合一些选项来

    2024年02月04日
    浏览(46)
  • C#修改解决方案的名称 和解决方案文件夹的名称 ,及项目程序名称,项目文件夹名称

    修改失败了,没有备份就得炸裂,一定要切记 右键项目- 属性 - 应用程序 先将 程序集名称 与 默认命名空间 先修改好 其次,在按组合键ctrl+ f 将原来的项目名称,替换成新的名称; 替换时,一定要针对整个解决方案进行替换 ----切记 关闭解决方案 ,一定要关闭 出现无法加

    2023年04月09日
    浏览(59)
  • .gitignore 文件——如何在 Git 中忽略文件和文件夹详细教程

    在任何当前工作的 Git 仓库中,每个文件都是这样的: 追踪的(tracked) - 这些是 Git 所知道的所有文件或目录。这些是新添加(用 git add 添加)和提交(用 git commit 提交)到主仓库的文件和目录。 未被追踪的(untracked) - 这些是在工作目录中创建的,但还没有被暂存(或用

    2024年02月05日
    浏览(30)
  • java项目中获取resources文件夹下文件

    方法一 获取到文件的流 方法二 直接获取路径 以上方法在服务器当中是否能获取到还未测试,公司要做个下载word文档功能,需要使用模板,于是测试了一下本地,后续将继续更新使用easypoi如何下载word文档 方法三 (重要) SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此

    2024年02月12日
    浏览(39)
  • uniapp项目-配置store文件夹

    说明:创建一个新的 Vuex Store 实例,配置 Store 中的模块。 说明: 在微信小程序中,使用 Vuex 进行状态管理时,可以通过  this.commit()  方法来触发一个 mutation,并对应传入指定的 mutation 名称。例如, this.commit(\\\'m_cart/saveToStorage\\\')  表示触发名为  saveToStorage  的  m_cart  模块的

    2024年02月11日
    浏览(39)
  • Gitee 上传项目到仓库(上传文件夹)

    1.首先打开仓库,点击下载压缩包  2.将下载的压缩包解压,并打开,在当前目录下打开 1.在文件当前目录打开git bash     2.初始化git 该命令会生成一个隐藏的.git文件夹  如果不是第一次使用,没有必要使用该指令 3.将项目放入该目录下。如果是更改项目,则覆盖原文件 4.添

    2024年02月16日
    浏览(40)
  • VisualStudio解决方案多个文件夹将项目分类

    见过好多大项目,一个解决方案好多个项目,网站、动态库、测试等。放在不同的文件夹下,感觉很好。下面介绍一下方法。 首先创建一个空白解决方案 会自动创建MultiFolder解决方案目录。 新建解决方案文件夹 解决方案文件夹不会创建对应的真实目录,需手工在解决方案目

    2024年02月10日
    浏览(67)
  • 创建易于维护的现代Web应用程序文件夹结构的指南

    在开发Web应用程序时创建可维护的文件夹结构非常重要,正确的文件放在正确的文件夹中有助于组织您的代码,并让其他开发人员了解您的Web应用程序的架构是什么样子的,或者将在开发过程中变成什么样子。在这篇文章中,我将解释一些在构建现代Web项目时使用的文件夹名

    2023年04月09日
    浏览(80)
  • [github+Windows]从github下载指定项目的单个文件或文件夹

    通过搜索发现,网页上大多流传的是Linux如何从github下载单个文件夹,对于小白来说,不想费力气地安装SVN、gitzip等等工具,将github项目中的单个文件夹下载到Whindows本地,当然是越简单越好。 通过网上查找发现了一个github下载单个文件夹的简单工具,是网页版,将网站打开

    2024年01月19日
    浏览(35)
  • git如何仅合并项目下的某个文件夹

    假设目前在做的一个项目名为demoproject,目前版本为v1.0.0,标准开发都是在demoproject上进行的,但是有一个客户需要做定制化,需要将项目中的一些信息改为客户的,于是基于demoproject拉了一个v1.0.0-custom,然后将这个v1.0.0-custom交付给了客户。 过了一段时间,客户又提了新的需

    2024年01月21日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包