據(jù)庫并序列化_python restful api 學習筆記.3 序列化)
創(chuàng)建一個應用程序用于創(chuàng)建簡單的Web API。.py我們會當下先去打造出一個專門被用來存放代碼片段的簡易模型, 接著持續(xù)進行并著手去編輯/.py文件。模型創(chuàng)建初始遷移并首次同步數(shù)據(jù)庫。頭一件要做的關乎使用Web API的事, 是給出一種能把代碼片實例予以序列化, 以及反序列化為像是json這般表示形式的辦法。我們借助聲明跟表單極其相仿的序列化程序去達成此點。在名為的那個目錄里創(chuàng)建一份文件.py, 繼而增添如下內容。序列化程序類當中的第一部分, 對獲得序列化以及反序列化的字段作出了定義。而該()以及()方法, 針對實例在創(chuàng)建或者修改達到完全成熟狀態(tài)時調用.save() , 進行了定義。序列化器類跟Form類極為相像, 于各自字段里含有相似的驗證標志, 比如說, 就像這樣, 還有別的例子, 是這樣的。在某些情形應當怎樣去顯示序列化程序, 字段標志能夠對此施予控制, 比如說在呈現(xiàn)為HTML的時候。 : .html}上述這種標志等同于, 是施展于Form類之上。對于控制可瀏覽的API將怎樣去顯示而言, 這極具效用, 就如同我們在后續(xù)教程當中將會目睹的那般。我們事實上也能夠借助使用該類省下一些時間, 我們隨后會瞧見, 不過此刻我們會讓我們的序列化器定義維持清晰。我們會在繼續(xù)往前之前, 熟悉運用我們的新類, 接著進入 shell。.py shell這個時候, 我們已然把模型實例轉變?yōu)楫數(shù)氐臄?shù)據(jù)類型, 為了達成序列化的進程, 我們把數(shù)據(jù)呈現(xiàn)到json里。反序列化是相似的。首先我們將一個流解析為本地數(shù)據(jù)類型......然后我們將這些本地數(shù)據(jù)類型恢復為完全填充的對象實例。留意API跟表單的工作模式相仿, 在我們著手編寫運用我們序列化器的視圖之際, 那種相仿性理應會變得愈發(fā)顯著。我們能夠序列化查詢集, 而非模型實例, 這也是可行的哦。要達成此項的話, 我們僅僅需要在序列化參數(shù)里添加一個標志, 也就是manyTrue , 如此這般。大量信息被含在我們班正在復制的模型之中。要是我們能夠讓我們的代碼維持得更簡潔那么一丁點兒, 這般的情況將會是相當不錯的。就像提供Form類和類一樣REST框架包含類和類。咱們來瞧瞧運用該類去重新構建我們的序列化程式, /.py再度將此文件打開, 并且拿下列內容把該類給替換掉。class (.):class Meta:model 序列化程序具有的那一個挺好的屬性在于, 您能夠借由打印其表述來核查序列化程序實例當中的全部字段。開啟 shell.py shell, 而后嘗試開展如下操作:關鍵在于得記著, 類不會去做任何格外神奇之事項, 它們僅僅是造就序列化程序類的便捷途徑:自動確定的一組字段。簡單的默認實現(xiàn)()和()方法。瞧一瞧, 瞅一瞅, 看看咱們要怎樣運用咱們那個新類去編寫一些API視圖。當下這會兒呢, 咱們不會用上REST框架的任何別的功能, 咱們僅僅會把視圖編寫成常規(guī)的那種視圖的模樣的。編輯該/views.py文件并添加以下內容。from .http ,from .views..csrffrom .from .from .from .作為一種支撐, 能夠列出所有現(xiàn)存片段, 或者創(chuàng)建全新片段的視圖, 將會成為我們API的根源。def ():List all code , or a new .if . GET: ..all() (, manyTrue)(.data, safeFalse)elif . POST:data ().parse() (datadata)if .():.save()(.data, 201)(., 400)假設我們期望能夠以不帶有CSRF令牌的客戶端朝著這個視圖發(fā)送POST請求, 此時我們就得把該視圖標記成。這可不是你平常會想要去做的事兒啊, 而且REST框架視圖實際上采用的行為比這更理性, 然而它當下能夠被運用來達成我們的目的。我們還需要一個視圖, 其和單個片段相對應, 并且這個視圖能夠被用來進行代碼段的檢索, 代碼段的更新, 以及代碼段的刪除。def (, pk):, or a code .try: ..get(pkpk).:(404)if . GET: ()(.data)elif . PUT:data ().parse() (, datadata)if .():.save()(.data)(., 400)elif . :.()(204)最后我們需要把這些觀點聯(lián)系起來。創(chuàng)建/urls.py文件咱們還得于 /urls.py 文件里進行連接根, 以此來涵蓋我們代碼段應用的 URL。啟動的開發(fā)服務器在另一個終端窗口中我們可以測試服務器。在對API進行測試這件事上, 我們能夠采用curl, 也能夠將其作為驗證手段, 它是以編寫的形式成為對用戶友好的http客戶端, 那就讓我們把它安裝起來。您可以使用pip安裝可以通過引用其ID來獲取特定片段