DRF框架中的英文單詞
1.prefix /'prif?ks/前綴,我們在路由配置的時候經(jīng)??匆娺@個單詞。在flask中,我們可以在設置url的時候為了區(qū)別視圖,在類似功能的url全部加一個前綴。
2.version /'v??n/版本,這個在計算機上面很常見,在DRF框架中的RESTful設計風格中有一種規(guī)范,就是將api的版本號放入url中,如下:(1.0即版本號)
http://www.example.com/api/1.0/foo
3.endpoint /'?nd,p??nt/終點,我們在RESTful設計風格中也稱為路徑,表示API的具體網(wǎng)址。這里就簡單的回顧一下之前的內(nèi)容:資源作為網(wǎng)址,只能有名詞,不能有動詞,而且往往與數(shù)據(jù)庫中的表名相對應;還有就是名詞用復數(shù)。淡然這只是設計風格,如果你幾百個接口有那么幾個用了動詞也是符合Restful設計風格的。
4.filter/'f?lt?/過濾,我們在DRF框架的高級功能中,就有過濾這一項??梢栽趗rl地址中傳參數(shù),我們進行過濾。
5.Status Codes狀態(tài)碼,當然我們在用的時候都是直接使用了status狀態(tài)這個單詞用來表示狀態(tài)碼了。這里有一個注意點就是我們在項目中狀態(tài)碼盡量不要直接寫數(shù)字,而是用常量,這樣別人看到也好理解。
6.Error handling錯誤處理,在Restful設計風格中,如果狀態(tài)碼是4xx,我們就應該返回錯誤的信息,通常來說是下面這個樣子,但是不唯一:
{error:"<error message>"}
7.PATCH這個操作在現(xiàn)在基本上是不用的,但是我們了解一下,path只是將更改的內(nèi)容發(fā)送,put將更改后所有的內(nèi)容都發(fā)送過去。這個在網(wǎng)上說法不一,先按這種理解,畢竟沒人用這種操作方式了,而是用put。
8.Hypermedia API超媒體,這個也是理解即可,RESTful API最好做到Hypermedia(即返回結(jié)果中提供鏈接,連向其他API方法),使得用戶不查文檔,也知道下一步應該做什么。
{
"current_user_url": "https://api.github.com/user",
"authorizations_url": "https://api.github.com/authorizations",
// ...
}
9.gender /'d??nd?/性別,我們在表的字段中經(jīng)??匆娺@一單詞。以后大家千萬不要再用sex表示性別了,它表示性更多一點,哈哈哈。
10.title/'ta?tl/標題,我們在設計模型類的時候用到了這一單詞,很簡單,大家過一下即可。
11.publication/,p?bl?'ke??n/出版,我們在pub_date出版日期時候見過他的縮寫。
12.comment/'kɑm?nt/評論,比如書的評論信息。還有read讀這個單詞,我們就不單獨說了,大家都知道。
13.image/'?m?d?/影像,肖像,我們常用來表示圖片。
14.Meta/'m?t?/n.人名,名詞有人名的意思。我一直以為是什么單詞的縮寫,但是沒有想到竟然有這個單詞,前端中也表示標簽的優(yōu)化、原標簽。后端我們在設計模型類時自定義表名的時候用到了。
15.verbose /v?'bos/冗長的;啰嗦的,我們使用verbose_name指明一個易于理解和表述的對象名稱。
class Meta:
db_table = 'tb_books' # 指明數(shù)據(jù)庫表名
verbose_name = '圖書' # 在admin站點中顯示的名稱
verbose_name_plural = verbose_name # 顯示的復數(shù)名稱
16.plural/'pl?r?l/復數(shù),上面的這個單詞是復數(shù)的意思。
17.detail /d??tel/詳細,我們在展示詳情的時候,視圖名稱通常會用到這個單詞。
18.urlpatterns這其實不是一個單詞,我們只是將url和patterns(模式)組合了一下。我們用來表示路由的url的路由列表。但是pattern在計算機中通常用來表示模式。
19.Serialization/?s??r?rla?'ze??n/序列化,這個單詞全球只有美式音標,統(tǒng)一的。應該是美國人發(fā)明的吧,畢竟美國的計算機發(fā)展的相當棒。序列化這個定義很很重要,給大家強調(diào)一下:在Django中,我們可以簡單的理解為將模型類對象轉(zhuǎn)化成字典或字符串的這個過程。反過來就是反序列化,但是沒有單詞,哈哈,又少記憶一個單詞。
20.model/'mɑdl/模型,我們在很多的時候都用到了這個單詞,在DRF框架我們在下面的情況中用到了這個單詞。指明該序列化器處理的數(shù)據(jù)字段從模型類BookInfo參考生成。
class BookInfoSerializer(serializers.ModelSerializer):
"""圖書數(shù)據(jù)序列化器"""
class Meta:
model = BookInfo
fields = '__all__'
21.fields/'fildz/字段,指明該序列化器包含模型類中的哪些字段,'all'指明包含所有字段。上面的例子就用到了這個單詞。
22.queryset查詢集,這個也是組合單詞。
class BookInfoViewSet(ModelViewSet):
# 指明該視圖集在查詢數(shù)據(jù)時使用的查詢集
queryset = BookInfo.objects.all()
# 指明該視圖在進行序列化或反序列化時使用的序列化器
serializer_class = BookInfoSerializer
23.通用參數(shù):
| 參數(shù)名稱 | 說明 |
|---|---|
| read_only | 表明該字段僅用于序列化輸出,默認False |
| write_only | 表明該字段僅用于反序列化輸入,默認False |
| required | 表明該字段在反序列化時必須輸入,默認True |
| default | 序列化和反序列化時使用的默認值 |
| allow_null | 表明該字段是否允許傳入None,默認False |
| validators | 該字段使用的驗證器 |
| error_messages | 包含錯誤編號與錯誤信息的字典 |
| label | 用于HTML展示API頁面時,顯示的字段名稱 |
| help_text | 用于HTML展示API頁面時,顯示的字段幫助提示信息 |
24.instance /'?nst?ns/實例,我們下面的這種情況下用到了:
Serializer(instance=None, data=empty, **kwarg)
25.context/'kɑnt?kst/環(huán)境;上下文
serializer = AccountSerializer(account, context={'request': request})
通過context參數(shù)附加的數(shù)據(jù),可以通過Serializer對象的context屬性獲取。
26.validators驗證器,沒有查到音標,只有網(wǎng)絡釋義。
在序列化器中需要同時對多個字段進行比較驗證時,可以定義validate方法來驗證:
btitle = serializers.CharField(label='名稱', max_length=20, validators=[about_django])
上面的about_Django是我們定義的補充驗證函數(shù)名。
27.params /?p?r??m/參數(shù),這個大家不陌生,經(jīng)??匆?。
28.generic /d??'n?r?k/類的,是形容詞。視圖的兩個基類中GenericAPIView就有這個單詞。
29.format /'f?rm?t/格式
30.retrieve/r?'triv/檢索,我們通常用這一個操作,來表示查找指定的信息。
31.Destroy/d?'str??/破壞,我們通常用這一個操作,來表示刪除指定的信息。
32.router /'r?t?/路由器,我們指的可不是路由器了,它指的也不是視圖函數(shù),而是封裝了視圖函數(shù)和請求的url的映射關系的一個東西。
33.Authentication /?,θ?nt?'ke??n/認證,我們DRF框架中的高級功能之一。
34.Permissions/p?:'mi??nz/權限,我們DRF框架中的高級功能之一。
35.Throttling/'θr?tli?/限流,我們DRF框架中的高級功能之一。
36.Pagination/,p?d??'ne??n/分頁,我們DRF框架中的高級功能之一。
37.Exceptions /?k's?p??n/異常處理,,我們DRF框架中的高級功能之一。