展开

文章目录

修改历史

历史修改版本

  1. 2021-01-26 12:22:36
  2. 2020-12-28 23:51:40
  3. 2020-12-14 14:35:59
  4. 2020-12-14 14:35:51
  5. 2020-12-14 14:30:06

使用Flask搭建一个校园论坛1-项目初始化

2020-12-14 14:29:47 系列教程 806

简介

基于Flask、Bootstrap4开发一个校园bbs论坛系列教程,该篇博客属于系列教程第一节,主要介绍此项目的起因、功能设计、组织架构等等。

Flask·缘起

在上家公司的时候,一次偶然的机会上级让我使用webpy框架开发一个网页版的计算工具,具体设计到一些控制算法的计算。当时没有接触过web开发的项目。在那之前都是使用PyQt5去做一些桌面应用程序的开发。

一开始搜索webpy的资料的时候,发现资料十分的匮乏,然后还惊奇的发现该框架的作者已经逝世了(震惊且惋惜)。然后搜索其他的开发框架,就这样我发现Flask这个轻量级web框架了。

整一个教程

使用Flask也有一年多的时间,看了很多书籍教程,让我最受益匪浅的是李辉出版本的那本web开发教程。在此期间也遇到了很多问题,作为CCCV型的程序员的我,那某D某G是必须会的。然后我也使用Flask搭建一个个人博客网站,很多我在开发过程中遇到的问题都记录在里面了。

虽然也写了一些博客,但是终归没有一个系列的教程,就这一直想着出一个系列的教程。一来可以学习到一些新知识或者巩固旧知识,二来可以锻炼自己的写作叙事水平以及逻辑思维能力。正当我思考着用什么作为这篇系列教程的基础时,想到了一句话,遇事不决,先来一个CMS~!于是乎,我就打算已bbs来作为本系列教程内容了!

借(chao)鉴(xi)

现在网络上有很多形形色色的论坛,论坛的功能也大有不同,在这里我们选择借鉴v2ex以及hupu的功能以及大致页面布局方式。

画图纸

经过深思熟虑之后,大致功能如下:功能设计

搭建项目开发环境

本项目采用的Python3.6+Flask1.1.2+Bootstrap4.5进行开发的。

找一个你想要存放代码的地方新建一个名为university-bbs的文件夹,当然名字你也可以按照你自己的想法来取,然后在根目录执行如下命令

python3 -m venv venv

这时候我们的本地虚拟环境就创建完成了,然后我们使用如下命令激活虚拟环境。

source venv/bin/activate

为什么要创建虚拟环境?

因为Python的版本非常的多,而且每个第三方的库的版本也十分的多。我们A项目可能依赖的环境是foo 1.x版本,而B项目依赖的环境是foo 3.x版本,那么我们如果让A/B两个项目同事使用一个全局环境,那么肯定是行不通的。这时候我们就可以对每个项目创建一个虚拟环境来运行,各自项目对应运行在各自的虚拟环境中,互不冲突。

Python社区繁荣昌盛,我们的包管理工具非常的多。比如pipenv、virtualenv、poetry等等。感兴趣的可以去了解一下,特别是poetry,当下十分流行。在本项目中我们使用Python3内置的venv模块以及pip来管理虚拟环境以及包。

项目组织架构

在开发Flask应用时,虽然我们可以在一个文件中写完所有的功能,但是当我们的项目越来越大,代码量越来越多的时候,这样的方式我们就很难管理了。合适的项目组织架构可以使我们更加好的管理代码,并且层次条理十分清晰,本项目的组织如下:

项目组织架构

我们可以在我们项目的根目录中按照上图的组织架构,新建好对应的文件夹。

  • bbs

    项目代码存放目录

    • blueprint

      存放蓝图模块包

      • frontend

        前端蓝图

      • backend

        后端管理界面蓝图

    • static

      静态文件存放目录,主要是用来存放css、js还有一些静态资源的目录

    • templates

      存放html文件目录

      • frontend

        前端html文件

      • backend

        后端html文件

  • resources

    存放用户资源文件

    • avatars

      存放用户头像

    • images

      用户上传的图片,包括帖子、评论等

至此,本项目前期的准备工作都已做完了,下一节开始,我们就开始真正的开发流程了。

 

当前共有1条评论


Hopetree 用户

我觉得这种bbs的项目用django会快很多,自带的用户管理及后台可以省去很多东西,flask我感觉用来做前后端分离,以及只提供接口的服务比较方便

Macv 博主 回复:Hopetree

嗯嗯,确实是这样。用flask还需要写后台来管理这些内容,虽然说有flask-admin这种轮子,但是还是不如django方便。我写这个的初衷主要是锻炼一下自己的写作逻辑能力