# journalismManger **Repository Path**: wolfserver/journalismManger ## Basic Information - **Project Name**: journalismManger - **Description**: 后台 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-07-15 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安博士服务器端 该项目是服务与安博士app的web应用,以图片为主,指明了每个文件夹的作用,以及开发规范的图片操作指示 ## 技术框架介绍 基于Flask技术栈搭建的后端开发框架,项目结构受到vue3.0的启发而搭建,如下图所示。 ![](./docs/imgs/project_structure_introduction.png) ## 项目结构详解 ### auto_deploy 此文件夹下,放置自动部署脚本,待完善 ### docs ![](./docs/imgs/docs_structure_introduction.png) #### 结构规范: 开发人员编写api的文档,统一保存在该文件夹下。 文档图片保存目录:imgs 文档名方式为: ```shell api_v{number}.md ``` #### markdown规范: 图片统一使用**相对导入**,保证在git上面可以成功展示,如源码如下图所示 ![image-20190717171637535](./docs/imgs/image_import.png) git上展示效果 ![](./docs/imgs/markdown_specification.png) ### public #### 结构规范: 静态文件的保存目录 分为两块 - templates:保存html - static:保存js、css、img等 如图所示 ![](./docs/imgs/public_structure_introduction.png) #### 资源文件的创建: 例如:现在需要编写home模块下的子模块banner的静态文件 在home文件夹下创建banner文件夹,**如果有独有样式文件,也必须要在static目录下创建相同名字的文件夹** ![new_html](docs/imgs/src/controller/new_html.png) ### src #### 结构规范: 源码目录主要分为以下部分,由以下部分组成 - controller - middleware - model - utils - viewmodel - application.py - config - plugins 具体作用,由下图可以得到说明 ![](./docs/imgs/src/project_structure_introduction.png) #### 开发规范: 下面演示如何规范地为每个模块添加功能,以及目录的布局规范 ##### 创建controller: 1. 如何创建一个控制器?以user为例 - 如下图操作,并键入user(单数形式) ![](docs/imgs/src/controller/new_a_controller1.png) - 得到以下文件夹 ![](./docs/imgs/src/controller/new_a_controller2.png) - 在user文件夹下的init.py,添加如下代码,如果不是init.py文件编写的controller类,必须要在文件末尾导入,具体可以看other模块的末尾 ![](./docs/imgs/src/controller/new_a_controller3.png) - 在controller的init.py里面,导入新创建的user模块,注意是user的蓝图(user_bp),不要导入api(user_api) ![](./docs/imgs/src/controller/new_a_controller4.png) 2. 如何创建一个restful风格的路由?以user为例 - 进入user的init.py,在红色方框添加代码 **注意:导入的时候使用相对导入,不要用绝对导入,否则会出现循环导入** ![](./docs/imgs/src/controller/new_a_controller5.png) 3. 打开浏览器,输入http://127.0.0.1:5000/user/既可以看到效果 ![](./docs/imgs/src/controller/new_a_controller6.png) ##### 关于其他模块: 其他模块的创建也是大同小异 不同之处,需要用到flask内置的装饰器去做特殊切面编程 相同之处,需要把模块导出,如下图所示 ![](./docs/imgs/src/export_module.png)