写点什么

《Django 5 By Example》阅读笔记:p651-p678

作者:codists
  • 2024-11-19
    广东
  • 本文字数:1778 字

    阅读完需:约 6 分钟

《Django 5 By Example》学习第 9 天,p651-p678 总结,总计 28 页。

一、技术总结

1.aggregate()

(1)aggregate:ad-("to") + gregare("to collection into a flock(群), to gather")


因为 ad 后面跟的是 gregate,为了发音方便,ad 演变为了 ag。aggregate 的本意是:vt. to combine into a single group(聚合, multiple things > single group)。


示例:The butterflies aggregate in dense groups(蝴蝶聚集在一起).


(2)数据库里面的 annotate


aggregate()在数据库里面的含义是:aggregate refer to the process of summarizing or combining data from multiple row into a single result(multiple row > single result)。例如:SUM(),AVG(),COUNT(),MAX(),MIN()都称为聚合函数。


示例:


SELECT AVG(price) FROM book;
复制代码


(3) Django 里面的 aggregate


示例:


# Average price across all books, provide default to be returned instead# of None if no books exist.>>> from django.db.models import Avg>>> Book.objects.aggregate(Avg("price", default=0)){'price__avg': 34.35}
复制代码

2.annotate()

(1)annotate:ad-("to") + notare("to mark, to note")


因为 ad 后面跟的是 notare,为了发音方便,ad 演变为了 an。annotate 的本意是:to add marks or notes to explain on sth(给.....作注解,给......加评注)。


(2)数据库里面的 annotate


annotate()在数据库里面的含义是:annotate refers to adding supplementary information to queries or request.This can help provide context, make data more understandable, or enhance the the functionality of queries or results.


示例:


COMMENT ON COLUMN employees.salary IS 'Employee annual salary';
复制代码


(3)Django 里面的 annotate


Django 里面的 annotate()函数的作用是:Annotates each object in the QuerySet with the provided list of query expressions(使用已提供的 query expressions 对 QuerySet 中的每个对象进行注解。添加注解的结果是 QuerySet 中的每个 objec 会多一个字段)。


示例:


# Build an annotated queryset>>> from django.db.models import Count>>> q = Book.objects.annotate(Count("authors"))# Interrogate the first object in the queryset>>> q[0]<Book: The Definitive Guide to Django>>>> q[0].authors__count2# Interrogate the second object in the queryset>>> q[1]<Book: Practical Django Projects>>>> q[1].authors__count1
复制代码

3.DRF serializer

(1)定义


p648, Serializer: Provides serialization for normal Python class instances。


(2)分类


Serializer 又细分为 Serializer, ModelSerializer, HyperlinkedModelSerializer.


(3)Field


IntegerField(),SerializerMethodField(),StringRelatedField()。


(4)nested serializer


nested serializer 可用于替代 StringRelatedField()。

4.DRF 分页

DRF 使用 PageNumberPagination 进行分页。

5.DRF authentication

(1)BasicAuthentication


(2)TokenAuthentication


(3)SessionAuthentication


(4)RemoteUserAuthentication


又提到了认证,我快要晕了,差不多每个项目都搞一次认证,能抽象出来做一个整体的介绍不?毕竟认证这块在实际项目中并不会变动那么大,真没必要花那么多章节来介绍认证的。

二、英语总结(生词:0)

无。

三、其它

(1)json_pp


curl http://127.0.0.1:8000/api/subjects/ | json_pp
复制代码


不知道为什么,感觉国外的的作者特别喜欢使用 curl,本人上次看到还是 curl 结合 jq 使用,这次是 curl 结合 json_pp 使用,在 postman 和命令行之间反复跳。可能是 postman 输入地址太麻烦?


重新梳理了下 aggregate()、annotate()等函数的含义及用法,之前学得太糙了,不够细,慢慢的就忘掉了它的用法。


chapter 15 简评:以在线学习平台为例,介绍了如何在 Django 项目中集成 django-rest-framework。这个学习平台的介绍又是在前面几章,感觉排版很不合理,如果都是一个项目的话最好还是用一整个章节来介绍比较好。同时既然都使用了 django-rest-framework 了,咋不整一个前端框架呢?

四、参考资料

1. 编程

(1) Antonio Melé,《Django 5 By Example》:https://book.douban.com/subject/37007362/

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com


(2) Cambridge Dictionary:https://dictionary.cambridge.org


欢迎搜索及关注:编程人(a_codists)

发布于: 刚刚阅读数: 2
用户头像

codists

关注

公众号:编程人 2021-01-14 加入

Life is short, You need Python

评论

发布
暂无评论
《Django 5 By Example》阅读笔记:p651-p678_Python_codists_InfoQ写作社区