django開發小結

repo: github.com/alphardex/p…python

最近把《django by example》的項目差很少都擼完了,是時候該寫個小結了。git

我的體會:django的api能夠說是不少很全,這輩子都不可能全記住的。github

其實,懂得速查文檔就沒有什麼大問題。redis

大量的封裝雖然犧牲了必定的靈活性,但大大提升了開發效率,或許這就是django的哲學吧。sql

準備

首先,你能夠用django-admin來生成你的項目。shell

不過筆者更建議用一個腳手架來快速生成一個啓動模板。數據庫

核心工做流

Django的核心是MVC,更準確來講是MVT(Model-View-Template)django

首先建立app,並在settings中的INSTALLED_APPS添加其配置,在全局urls中經過include引入app的全部urlflask

接下來纔是最關鍵的3步:bootstrap

  1. 在models.py中定義好數據模型並遷移它們
  2. 在views.py中編寫視圖函數,並在urls.py中爲其建立相應的映射
  3. 在templates文件夾中編寫要渲染的模板HTML

數據模型的定義其實就是定義各類各樣的字段,還有個Meta類能夠定義一些元數據(好比字段的排序等),此外你也能夠爲模型封裝一些method來簡化視圖的編寫。

視圖函數的編寫主要涉及如下方面:模型的CRUD、表單的處理、模板的上下文渲染(必須熟悉HTTP)

視圖函數分2種:函數和類(即FBV和CBV)。二者各有利弊,根據需求自行權衡。目前來講後者在django中比較流行。

給視圖添加額外功能:FBV用裝飾器,CBV用Mixin。

模板的編寫主要涉及:上下文的渲染、if、for、with語句、過濾器、繼承等

後臺管理

其實在定義完數據模型後就已經能夠從admin開始玩起了(初次進入須要建立一個超級用戶)。

把數據模型統統註冊上去,以便進行CRUD。

其餘雜項

  • 數據模型的Meta元信息(ordering、abstract等)
  • 利用Manager來簡化查詢
  • 熟悉QuerySet的各類接口和查詢方法(好比Q、select_related等)
  • 懂得如何優化查詢
  • 利用Library實現自定義標籤
  • 建立sitemaps來優化SEO
  • 建立feeds來提供RSS訂閱功能
  • 利用Postgresql來實現全文搜索
  • 利用Ajax來優化用戶體驗
  • 利用contenttypes來追蹤models(好比實現用戶活動流)
  • 利用signals來反規範化計數
  • 利用Redis實現各類功能(緩存、計數、排行榜等)
  • 利用sessions在服務端存儲數據(好比購物車)
  • 利用celery實現異步任務(好比郵件發送)
  • 定製admin
  • 數據模型的繼承(abstract、multi-table、proxy)
  • 自定義數據模型字段
  • 用Mixin爲類視圖添加額外功能
  • 用formset處理多張表單
  • 緩存的使用
  • 用drf建立RESTful API
  • 自定義中間件
  • 部署上線

若是對以上內容都瞭然於胸的話,能夠說是掌握django了。

固然,以上的全部內容用flask也均可以實現,只是方式不一樣罷了:)

經常使用第三方庫

  • django-debug-toolbar:提供DEBUG信息,必備
  • django-crispy-forms:美化表單
  • django-extensions:各類擴展(shell、server等)
  • django-taggit:提供簡單的打標籤功能
  • django-braces:爲類視圖提供一系列Mixin
  • django-embed-video:爲頁面嵌入視頻
  • djangorestframework:大名鼎鼎的drf,爲django提供RESTful API支持
  • django-xadmin:一個更強大的admin後臺
  • django-ckeditor:爲表單提供富文本編輯器
  • markdown:提供Markdown渲染支持
  • pillow:圖像處理
  • sorl-thumbnail:縮略圖生成
  • redis:redis數據庫的接口
  • celery:分佈式任務隊列,用來任務調度
  • flower:監控celery
  • weasyprint:用HTML生成PDF文件
相關文章
相關標籤/搜索