Skip to content

Commit fff9719

Browse files
committed
N fix
1 parent 5b9f297 commit fff9719

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

md/50-基于类的视图.md

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
传统 Django 中就有**基于类的视图**的存在,DRF 中自然也有。优点也都差不多,即实现功能的模块化继承、封装,减少重复代码。接下来就用**文章详情**接口来练练手
1+
传统 Django 中就有**基于类的视图**的存在,DRF 中自然也有。优点也都差不多,即实现功能的模块化继承、封装,减少重复代码。接下来就用**文章详情**接口练练手
22

33
首先在视图中新增下面的代码:
44

@@ -28,14 +28,17 @@ class ArticleDetail(APIView):
2828
def get(self, request, pk):
2929
article = self.get_object(pk)
3030
serializer = ArticleDetailSerializer(article)
31+
# 返回 Json 数据
3132
return Response(serializer.data)
3233

3334
def put(self, request, pk):
3435
article = self.get_object(pk)
3536
serializer = ArticleDetailSerializer(article, data=request.data)
3637
# 验证提交的数据是否合法
37-
# 合法则保存,不合法则返回400
38+
# 不合法则返回400
3839
if serializer.is_valid():
40+
# 序列化器将持有的数据反序列化后,
41+
# 保存到数据库中
3942
serializer.save()
4043
return Response(serializer.data)
4144
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@@ -49,7 +52,11 @@ class ArticleDetail(APIView):
4952
...
5053
```
5154

52-
代码不复杂,就是提供了对文章详情的**获取****修改****删除**的 3 个方法,以及 1 个用于获取具体文章 model 的辅助方法。和之前说的一样,DRF 类视图与传统 Django 的区别,就是多了一个将对象序列化(或反序列化)的步骤。`.delete()` 方法因为不用返回实际数据,执行完删除动作就OK了。
55+
代码不复杂,就是提供了对文章详情的**获取****修改****删除**的 3 个方法,以及 1 个用于获取单个文章 model 的辅助方法。和之前说的一样,DRF 类视图与传统 Django 的区别,`.get()``.put()` 就是多了一个将对象序列化(或反序列化)的步骤。`.delete()` 方法因为不用返回实际数据,执行完删除动作就OK了。
56+
57+
> 从这个地方就可以看出,序列化器 `serializer` 不仅可以将数据进行序列化、反序列化,还包含数据验证、错误处理、数据库操作等能力。
58+
>
59+
> 序列化这个概念与具体语言无关。Python 或 JavaScript 对象转换为 Json 都称为序列化,反之为反序列化。Json 是两种语言传输信息的桥梁,一但信息到达,对方都需要将其还原为自身的数据结构。
5360
5461
由于详情接口需要返回完整的字段数据(与阉割版的文章列表接口不同),所以要重新给它定义一个序列化器:
5562

@@ -84,7 +91,7 @@ urlpatterns = [
8491
发送一个请求试试:
8592

8693
```python
87-
# 再次提醒:新手读者建议用 Postman 来发送 web 请求
94+
# 再次提醒:建议用 Postman 来发送 web 请求
8895
# 教程为了轻便使用了httpie,读者改为Postman即可
8996

9097
> http http://127.0.0.1:8000/api/article/1/

0 commit comments

Comments
 (0)