## 一、项目概览
Swiper Social 是一个类似于 “探探” 的社交类程序, 采用前后端分离结构, 主要包含以下模块:
1. 个人模块
2. 社交模块
3. VIP 模块
4. 异步任务模块
5. Redis 缓存模块
6. 日志模块、异常处理模块
7. 短信模块、邮件模块
8. 运维、部署
9. 前端模块
10. 其他
项目阶段时间规划:
1. Web 5 ~ 7 天
2. Python 进阶、爬虫、数据 3 ~ 5 天
## 二、项目目标
1. 了解真实项目的开发流程
2. 掌握如何使用 Git 完成协作开发和代码管理
3. 掌握 RESTful 的概念, 掌握前后端分离式的开发
4. 掌握日志的使用
5. 掌握缓存的使用
6. 掌握 Redis 不同数据类型的用法
7. 掌握 Celery 异步任务处理
8. 掌握 Nginx 的配置, 及负载均衡的原理
9. 了解分布式数据库及数据分片
10. 掌握数据库关系建模, 及不使用外键如何构建关系
11. 掌握服务器异常处理, 及报警处理
12. 熟练掌握常用 Linux 命令, 以及初级 bash 脚本的开发
13. 掌握线上服务器的安装、部署
14. 理解进程、线程、协程的原理, 以及多路复用、事件驱动、异步非阻塞等概念
15. 对服务器架构、服务高可用等有一个初步认识
## 三、项目布局
- 概览
```
proj/
├── proj/
│ ├── settings.py
│ ├── other_config.py # 其他配置
│ ├── urls.py
│ └── wsgi.py
├── common/ # 不与具体模块关联的独立的东西写到这里
│ ├── errors.py
│ ├── keys.py
│ └── middleware.py
├── app1/
│ ├── migrations/
│ ├── apps.py
│ ├── helper.py # 逻辑写到这里
│ ├── models.py
│ └── views.py (api.py)
├── app2/
│ ├── migrations/
│ ├── apps.py
│ ├── helper.py
│ ├── models.py
│ └── views.py (api.py)
├── lib/ # 底层模块写到这里
│ ├── cache.py
│ ├── http.py
│ ├── orm.py
│ └── sms.py
├── worker/ # 异步任务
│ ├── __init__.py
│ └── config.py
└── manage.py
```
- 通用的算法、功能放到 common 目录
- 底层的功能放到 lib 目录
- 独立脚本的放到 scripts 目录
- 配置文件放到项目目录 或 config 目录
- views.py 及 view_func()
1. MVC 模式的 V 只负责试图处理, 逻辑属于 Controller 层
2. view_func 本身不适合写逻辑, view 是特殊函数, 只负责视图处理。
3. 添加 helper.py 文件, 用来放置每个 app 的逻辑函数
4. 函数构建应保持功能单一, 一个函数只做一件事情, 并把它做好, 避免构建复杂函数
5. 复杂功能通过不同函数组合完成
## 四、RESTful 与 前后端分离
1. RESTful
- RESTful 是一种网络软件架构风格, 而非标准
- 用 URL 定位一个网络资源
- 用 HTTP 动词描述对资源的操作
- GET: 用来获取资源
- POST: 用来新建资源
- PUT: 用来更新资源
- DELETE: 用来删除资源
- 误区
- URL 中使用动词
- URL 中出现版本号
- 参数用 querystring 表示, 而不要拼在 path 部分
- 错误示范: GET /user/book/3
- 正确示范: GET /user/book?id=3
- 状态码的使用要精确
- 2xx:操作成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
- RESTful 与 Django REST framework 的区别
2. 前后端分离
传统 Web 开发, view 函数中需要进行墨般渲染, 逻辑处理与显示的样式均需要后端开发。
变成前后端分离后, 显示效果的处理完全交给前端来做, 前端自由度变大。后端只需要传递前端需要的数据即可, 将后端人员从繁琐的显示处理中解放出来, 专心处理业务逻辑
- 优点: 前端负责显示, 后端负责逻辑, 分工更加明确, 彻底解放前、后端开发者
- JSON: 完全独立于编程语言的文本格式, 用来存储和表示数据
- 前后端分离的本质
![front-back](./doc/img/front-back.jpg)
- 前后端分离后的开发流程
![fb-dev](./doc/img/fb-dev.jpg)
3. 代码实现
```python
from json import dumps
from django.http import HttpResponse
def render_json(data=None, error_code=0):
'''将返回值渲染为 JSON 数据'''
result = {
'data': data, # 返回给前端的数据
'code': error_code # 状态码 (status code)
}
json_str = dumps(result, ensure_ascii=False, separators=[',', ':'])
return HttpResponse(json_str)
```
4. 接口的定义
1. 定义接口基本格式
```json
{
"code": 0, // 状态码 (status code)
"data": { // 接口数据
"user": {
"uid": 123321,
"username": "Lion",
"age": 21,
"sex": "Male"
},
"date": "2018-09-12",
}
}
```
2. 定义 status 状态码
code | description
-----|-------------
0 | 正常
1000 | 服务器内部错误
1001 | 参数错误
1002 | 数据错误
3. 详细定义每一个接口的各个部分:
- 名称 (Name)
- 描述 (Description)
- 方法 (Method)
- 路径 (Path)
- 参数 (Params)
- 返回值 (Returns)
4. 接口定义举例:
> **接口名称:提交验证码登录**
>
> * **Description**: 根据上一步的结果提交需要的数据
> * **Method**: POST
> * **Path**: /user/login
> * **Params**:
>
> field | required | type | description
> ------|----------|------|-----------------------
> phone | Yes | int | 手机号
> code | Yes | int | 验证码
>
> * **Return**:
>
> field | required | type | description
> ----------|----------|------|-----------------------
> uid | Yes | int | 用户 id
> nickname | Yes | str | 用户名
> age | Yes | int | 年龄
> sex | Yes | str | 性别
> location | Yes | str | 常居地
> avatars | Yes | list | 头像 URL 列表, 最多为 6 张
>
> 示例:
> ```json
> {
> "code": 0,
> "data": {
> "uid": 123, // 用户 id
> "nickname": "Miao", // 用户名
> "age": 21, // 年龄
> "sex": "M", // 性别
> "location": "China/Beijing", // 常居地
> "avatars": [ // 头像 URL 列表, 最多为 6 张
> "http://xxx.com/user/avatar/123/1.jpg",
> "http://xxx.com/user/avatar/123/2.jpg",
> "http://xxx.com/user/avatar/123/3.jpg",
> ...
> ]
> },
> }
> ```
## 五、日志处理
1. 日志的作用
程序部署到服务器后会以 Daemon 方式长期运行, 没有办法直接看到程序的运行状况, 所以会将程序运行中的状况以日志的形式输出到文件中, 即“日志文件”
Python 已经提供了日志模块 logging, 可以直接使用。Django 使用的日志系统也是 Python 原生的 logging
2. 基本用法
```python
impo
没有合适的资源?快使用搜索试试~ 我知道了~
Some of the python tutorial - 《Python学习笔记》.zip
共186个文件
py:66个
md:17个
png:16个
需积分: 5 0 下载量 18 浏览量
2024-02-21
19:41:47
上传
评论
收藏 17.81MB ZIP 举报
温馨提示
Some of the python tutorial - 《Python学习笔记》
资源推荐
资源详情
资源评论
收起资源包目录
Some of the python tutorial - 《Python学习笔记》.zip (186个子文件)
androidwinusba64.cat 78KB
androidwinusb86.cat 78KB
UniversalADB.cer 768B
nginx.conf 1KB
AdbNativeMessaging.exe.config 196B
UniversalAdbDriverInstaller.exe.config 196B
pure-min.css 16KB
WUDFUpdate_01009.dll 2.05MB
WUDFUpdate_01009.dll 1.75MB
WdfCoInstaller01009.dll 1.64MB
WUDFUpdate_01007.dll 1.46MB
BouncyCastle.Crypto.dll 1.43MB
WdfCoInstaller01007.dll 1.42MB
WdfCoInstaller01009.dll 1.39MB
WUDFUpdate_01007.dll 1.24MB
WdfCoInstaller01007.dll 1.06MB
winusbcoinstaller2.dll 979KB
winusbcoinstaller2.dll 831KB
winusbcoinstaller.dll 692KB
winusbcoinstaller.dll 568KB
Newtonsoft.Json.dll 496KB
AdbWinApi.dll 94KB
AdbWinUsbApi.dll 60KB
.DS_Store 6KB
.DS_Store 6KB
adb.exe 800KB
signtool.exe 317KB
makecert.exe 63KB
UniversalAdbDriverInstaller.exe 12KB
AdbNativeMessaging.exe 6KB
.gitignore 1KB
.gitignore 12B
swiper.html 3KB
login.html 3KB
deal.html 2KB
info.html 1KB
index.html 1KB
index.html 1KB
android_winusb.inf 95KB
arch-8.jpg 130KB
arch-10.jpg 130KB
arch-9.jpg 124KB
arch-7.jpg 119KB
arch-5.jpg 116KB
arch-6.jpg 116KB
arch-3.jpg 108KB
arch-4.jpg 92KB
front-back.jpg 78KB
arch-2.jpg 66KB
arch-1.jpg 53KB
fb-dev.jpg 36KB
test.jpg 4KB
test.jpg 4KB
vue.js 279KB
vue.js 279KB
jquery.js 262KB
vue.js 84KB
axios.js 42KB
axios.js 42KB
qs.js 19KB
axios.min.js 13KB
vue-swiper.js 11KB
tyt.js 2KB
init.js 573B
test.js 353B
index.js 351B
nmh-manifest.json 525B
package-lock.json 269B
package.json 252B
settings.json 38B
UniversalAdbDriverInstaller.exe.manifest 2KB
README.md 26KB
4.1.2-User功能开发.md 12KB
web_api.md 10KB
4.2.3-分布式数据库及性能评估.md 10KB
4.1.3-个人资料功能开发.md 8KB
4.1.1-团队构建及项目管理.md 8KB
4.2.2-缓存及NoSQL的使用.md 7KB
4.2.5-服务器架构.md 6KB
4.2.1-VIP模块开发及日志处理.md 5KB
4.2.4-上线部署及脚本开发.md 5KB
4.1.4-Social模块开发-1.md 2KB
chat_api.md 2KB
TODO.md 2KB
README.md 350B
README.md 282B
README.md 176B
4.1.5-Social模块开发-2.md 35B
test.php 29B
master-slave-2.png 213KB
CDN.png 209KB
master-slave-1.png 128KB
screen.png 79KB
git.png 65KB
GIL.png 64KB
celery.png 36KB
icon.png 36KB
super-txt.png 5KB
like-txt.png 4KB
super-like.png 3KB
共 186 条
- 1
- 2
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3625
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功