Python教程之Django框架-视图集方式
- Django框架介绍
- ① 项目搭建(终端中)
- ② 项目配置(setting.py文件中)
- ③ 创建 数据表模型
-
- 一、安装 pymysql扩展(终端):
- 二、配置 pymysql扩展(在setting.py文件目录的__init__.py文件中):
- 三、配置 mysql数据库(setting.py文件中):
- 四、创建 数据库(终端):
- 五、创建 数据表(子应用模块的models.py文件中):
- 五、数据表模型 导入 数据库(终端):
- 六、添加 记录(shell语法 - Manager管理器 提供):
- 七、修改 记录(shell语法 - Manager管理器 提供):
- 八、查询 记录(shell语法 - Manager管理器 提供):
- 九、操作 查询记录对象(shell语法 - Manager管理器 提供):
- ④ 创建 序列化器(serializers.py文件中)
- ⑤ 创建 DRF框架接口-视图集(views.py文件中)
- ⑥ 使用 序列化器
Django框架介绍
python语言写的开源web开发的重量级框架,遵循MVT设计,不容易实现自定义。
特色是简便、快速的开发数据库驱动的网站,它强调代码复用,多个组件以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,使Django具有很强的可扩展性
MVT(Model-View-Template)
M: 数据库交互模块#
V: 控制器,控制所有模块#
T: web封装模块#
RESTful架构详解
一、设计理论:
- 具象的:每一个URL 返回 一种资源
- 表现:每种资源 都被指定了 具体数据格式
(请求头中 Accept和Content-Type) - 状态转换:前端和服务器交互过程中 请求状态和数据的变化
HTTP协议请求状态和请求规范:- 常用:
- (GET请求:获取资源)
- (POST请求:新建资源)
- 不常用:
- (PUT请求:更新资源 前端提供改变的实参)
- (PATCH请求:更新资源 前端提供改变的形参)
- (DELETE请求:删除资源)
- (HEAD请求:获取资源(原始数据))
- (OPTIONS请求:获取前端可以操作的资源信息)
- 常用:
二、设计规范:
- 域名:尽量将API接口部署在专用域名之下
例:https://api.example.com - 版本:在URL中 区分API版本
例:http://域名/app/1.0/ - 路由路径:资源作为网址,只能有名词(复数),不能有动词,而且所用名词与数据库的表名对应
例:- GET请求: /数据表名 :获取 所有资源
- POST请求: /数据表名 :新建 资源
- GET请求: /数据表名/4 :获取 4号资源
- PUT请求: /数据表名/4 :更新 4号资源
- DELETE请求: /主键表名/ID/外键表名/ID:删除 指定主键记录关联外键记录
- 过滤信息:API提供路由参数 过滤返回结果
例:?page=2&per_page=100:指定第几页,以及每页的记录数。 - 状态码:
例:
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - []:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized - []:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - []:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 - 错误处理:如果状态码是4xx,服务器就应该向用户返回出错信息
例:{error: “错误提示信息”} - 返回结果的数据规范:针对不同请求状态和路由地址,服务器向用户返回内容应该遵循一定规范
例:
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档 - 返回结果的超媒体链接:返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么
例:{“current_user_url”: “https://api.github.com/user”, …} - 其他:服务器返回的数据格式,应该尽量使用JSON,避免使用XML
三、核心流程:
1. 序列化(输出):数据库对象 → python数据(比如JSON)
2. 操作数据库
3. 反序列化(输入):请求数据→验证→ python数据(比如JSON)
① 项目搭建(终端中)
一、安装:
- 安装Django框架:
pip3 install django==1.11.11
- 安装DRF框架:
pip3 install djangorestframework
二、创建 Django项目:
- 创建工程:
django-admin startproject 工程名
(在当前目录下 生成 工程配置文件) - 启动工程服务器(终端):
python3 manage.py runserver 「ip:端口」
(默认IP是127.0.0.1 默认端口为8000)
(默认Debug模式启动 项目文件变动 服务器自动重启) - 重启工程服务器:
sudo service mysql restartxx
- 创建子应用:
方式一:python3 manage.py startapp 子应用模块名
(会检索 已注册的子应用模块 检索错误 会报ImportError导包异常)
方式二:django-admin startapp 子应用模块名
(站点创建)
三、shell命令模式: python3 manage.py shell
② 项目配置(setting.py文件中)
一、注册 DRF框架 和 子应用(INSTALLED_APPS中):
- 工程 注册 DRF框架:
'rest_framework',
- 工程 注册 子应用:
'子应用模块名.apps.子应用模块名Config',
二、注册 视图集(子应用模块的urls.py文件中):
- 子应用 注册 视图集(DRF框架提供-路由器注册):
from rest_framework.routers import DefaultRouter/SimpleRouter #导入 路由器#
router = DefaultRouter()/SimpleRouter()