大型项目结构
本文摘抄:青灯教育课程,版权归青灯所有,仅供学习使用。
对于中小项目来说,使用程序包足以满足开发的需求。但如果项目更加复杂和庞大,我们就需要学习一些进阶的项目组织技巧来规划整个项目。
项目分析
-
一个技术交流论坛的Web项目,主要为用户提供最新的技术文章与交流
-
以抓取其他网站数据和用户发布作为文章的主要来源
-
基于 Flask 框架,以 前后端部分分离 的形式实现具体业务逻辑
技术实现
-
基于 Python 3.8 + Flask2.x 框架实现
-
数据存储使用 Redis + MySQL 实现
-
第三方扩展:
-
腾讯云:腾讯云 COS 文件存储平台
-
腾讯云:腾讯云短信验证码平台
-
-
布署:基于ubuntu 18.04系统,使用 Gunicorn + Nginx 进行布署
功能模块
-
文章模块
-
首页文章列表
-
文章详情
-
-
用户模块
-
登录注册/个人信息修改
-
文章收藏/发布
-
-
后台管理
-
用户数据管理
-
博客文章管理
-
具体需求
论坛展示
-
首页
-
根据分类进行文章列表展示
-
上拉加载更多数据
-
点击新窗口跳转到文章详情页
-
顶部显示用户登录信息,未登录显示登录/注册按钮
-
右侧显示文章点击排行
-
-
注册
-
用户账号为手机号
-
图片验证码正确后才能发送短信验证码
-
短信验证码每60秒发送一次
-
条件出错时有相应的错误提示
-
-
登录
-
用手机号与密码登录
-
错误时有相应的提示
-
-
文章详情
-
文章内容 html 数据展示
-
用户点击收藏可以收藏当前文章
-
根据当前登录用户显示收藏状态
-
用户可以评论该文章
-
其他用户可以回复某一条评论
-
右侧显示文章点击排行
-
如果当前文章由具体作者发布,右侧显示作者信息,并且可以关注作者
-
项目搭建
使用 GIT 管理源代码
Git是什么?一个版本控制系统(VCS),采取的是分布式管理。教程:https://www.liaoxuefeng.com/wiki/896043488029600
git 常用命令
(venv) E:\git --help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]
These are common Git commands used in various situations:(以下是在不同情况下使用的常见Git命令:)
start a working area (see also: git help tutorial)(启动一个工作区(参见:git帮助教程))
clone Clone a repository into a new directory(将存储库克隆到一个新目录中)
init Create an empty Git repository or reinitialize an existing one(创建一个空的Git存储库或重新初始化一个现有的存储库)
work on the current change (see also: git help everyday)(处理当前的更改(参见:git help everyday))
add Add file contents to the index(将文件添加到索引中)
mv Move or rename a file, a directory, or a symlink(移动或重命名文件、目录或符号链接)
restore Restore working tree files(恢复工作树文件)
rm Remove files from the working tree and from the index(从工作树和索引中删除文件)
examine the history and state (see also: git help revisions)(检查历史和状态(参见:git帮助修订))
bisect Use binary search to find the commit that introduced a bug(使用二分查找查找引入错误的提交)
diff Show changes between commits, commit and working tree, etc(显示提交、提交和工作树之间的更改)
grep Print lines matching a pattern(打印符合图案的线条)
log Show commit logs(打印符合图案的线条)
show Show various types of objects(显示各种类型的对象)
status Show the working tree status(显示工作树状态)
grow, mark and tweak your common history(成长,标记和调整你们共同的历史)
branch List, create, or delete branches(列出、创建或删除分支)
commit Record changes to the repository(记录对存储库的更改)
merge Join two or more development histories together(将两个或多个开发历史连接在一起)
rebase Reapply commits on top of another base tip(在另一个基本技巧之上重新应用提交)
reset Reset current HEAD to the specified state(重置当前HEAD到指定状态)
switch Switch branches(切换分支)
tag Create, list, delete or verify a tag object signed with GPG(创建、列出、删除或验证与GPG签名的标记对象)
collaborate (see also: git help workflows)(协作(参见:git帮助工作流))
fetch Download objects and refs from another repository(从另一个存储库下载对象和引用)
pull Fetch from and integrate with another repository or a local branch(从另一个存储库或本地分支获取并与之集成)
push Update remote refs along with associated objects(更新远程引用和相关的对象)
git使用步骤:
1)初始化 git
$ cd [项目目录]
$ git init
2)配置当前项目git提交信息(可省略此步,如不配置则使用全局配置)
git config user.name XXX
git config user.email [email protected]
3)添加忽略文件
$ touch .gitignore
4)设置忽略文件内容(后续根据需要再添加)
.idea
*.py[cod]
*.log
5) 添加所有文件到暂存区
$ git add .
6)提交到本地仓库并填写注释
$ git commit -m 'init'
代码风格统一之black模块
摘自:http://zhengxin.qingdengedu.com/posts/pycharm/01black.html
在开发大型项目是时,使不同成员在不同编辑器下工作也可以得到完全相同的风格是非常重要的一件事情,这样可以减轻沟通成本。在前端社区有层出不出不穷的代码格式化工具,但是在 python 社区中也有不少工具,例如 pycharm 默认的 pep8 、autopep8,而black则是我遇到的最好用的。
black可以在命令行里面使用,也可以与编辑器集成一起使用,接下来就讲解一下是怎么使用的。
安装:
可以通过 pip 直接从 PyPI 下载安装:
pip install black
注意需要 Python 3.6.2 以上的版本
如果急于试用最新版本,可以通过下面的命令从 GitHub 安装(不推荐):
pip install git+git://github.com/psf/black
使用:
black {source_file_or_directory} # black {文件或者目录} # 对所有代码格式化 black .
在 PyCharm 中使用
相比于每次都专门打开一个终端,手动使用命令行调用 Black 格式化代码,我们更希望能把 Black 集成到我们常用的编辑器中,不需要离开写代码的界面即可完成格式化操作。
确认 Black 安装位置
在 macOS / Linux 上:
$ which black /usr/local/bin/black # 可能的位置
在 Windows 上:
$ where black D:\anaconda38\Scripts\black.exe # 可能的位置
如果是使用虚拟环境,则直接使用$PyInterpreterDirectory$/black作为程序路径。
添加外部工具
打开 文件 -> 设置 -> 工具 -> 外部工具
File -> Settings -> Tools -> External Tools
创建工具
- 名称:Black
- 描述:毫不妥协的 Python 代码格式化工具
- 程序:「上一小节得到的安装位置」
- 参数:
$FilePath$
- 工作目录:
$ProjectFileDir$
如果需要自定义其他选项,写在$FilePath$
前即可,比如代表「取消格式化字符串为双引号包裹”」的选项-S
:
使用
在已经打开的代码编辑界面(或项目文件树的某个目录上)鼠标右键,找到 External Tools -> Black,点击即可。
设置快捷键
还可以在 设置 -> 键盘映射 -> 外部工具 -> Black 上右键,打开编辑快捷键的菜单,添加键盘快捷键:
如果已经习惯了 PyCharm 默认的Ctrl + Alt + L
快捷键格式化代码,那么可以这样设置:
1、在 主菜单 -> 代码 -> 重新格式化代码 中删去快捷键
2、给 外部工具 -> External Tools -> Black 设置键盘快捷键Ctrl + Alt + L
自动格式化(可选)
1、确保已经安装了 File Watchers 插件
2、进入 设置 -> 工具 -> File Watchers,点击 + 以添加一个新的 watcher:
- Name: Black
- File type: Python
- Scope: Project Files
- Program: 上一小节得到的安装位置
- Arguments:
$FilePath$
- Output paths to refresh:
$FilePath$
- Working directory:
$ProjectFileDir$
3、在高级选项中:
- 取消勾选 “Auto-save edited files to trigger the watcher”
- 取消勾选 “Trigger the watcher on external changes”
使用 isort 对导入的模块排序
摘自:http://zhengxin.qingdengedu.com/posts/pycharm/03isort.html
isort 是一个实用的 Python 程序/库,用于按照顺序对导入进行排序表,并自动类型(标准库/附带库/自己的模块/……)类别部分。它为各种编辑器提供库和其他插件程序、Python快速对导入示例。
来看官网提供的例子:
# Before isort from my_lib import Object import os from my_lib import Object3 from my_lib import Object2 import sys from third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14 import sys from __future__ import absolute_import from third_party import lib3 print("Hey") print("yo")
使用 是 或 t 后 :
# After isort from __future__ import absolute_import import os import sys from third_party import (lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14, lib15) from my_lib import Object, Object2, Object3 print("Hey") print("yo")
导入部分清晰、有条理了许多。
安装:
安装非常简单,只需
pip install isort
安装 isort 并支持 requirements.txt :
pip install isort[requirements_deprecated_finder]
简单实用
在特定文件上运行:
isort mypythonfile.py mypythonfile2.py
地面使用:
isort .
如果开启了globstar,则isort .
等价于:
isort **/*.py
查看等式将仅发生的变化,但不适用:
isort mypythonfile.py --diff
以原子方式对项目运行等,只是在不引入语法错误的情况下应用更改:
isort --atomic .
(注意:默认情况下这是禁止的,因为它可以阻止或反对使用不同版本的 Python 编写的代码运行。)
在 Python 内使用
import isort isort.file("pythonfile.py")
或者
import isort sorted_code = isort.code("import b\nimport a\n")
更多信息可参见本文Python API一节。
标签:git,--,black,Python,全栈,大型项目,isort,import,结构 From: https://www.cnblogs.com/WitterWu/p/16849563.html