當前位置:
首頁 > 知識 > 簡化 Django 開發的八個 Python 包

簡化 Django 開發的八個 Python 包

(點擊

上方公眾號

,可快速關注)




編譯:linux中國-belitex,英文:Jeff Triplett


https://linux.cn/article-10085-1.html





這個月的 Python 專欄將介紹一些 Django 包,它們有益於你的工作,以及你的個人或業餘項目。




Django 開發者們,在這個月的 Python 專欄中,我們會介紹一些能幫助你們的軟體包。這些軟體包是我們最喜歡的 

Django

 庫,能夠節省開發時間,減少樣板代碼,通常來說,這會讓我們的生活更加輕鬆。我們為 Django 應用準備了六個包,為 Django 的 REST 框架準備了兩個包。幾乎所有我們的項目里,都用到了這些包,真的,不是說笑。


不過在繼續閱讀之前,請先看看我們關於

讓 Django 管理後台更安全

的幾個提示,以及這篇關於 

5 個最受歡迎的開源 Django 包

 的文章。


有用又省時的工具集合:django-extensions


django-extensions

 這個 Django 包非常受歡迎,全是有用的工具,比如下面這些管理命令:




  • shell_plus

     打開 Django 的管理 shell,這個 shell 已經自動導入了所有的資料庫模型。在測試複雜的數據關係時,就不需要再從幾個不同的應用里做導入操作了。



  • clean_pyc

     刪除項目目錄下所有位置的 .pyc 文件



  • create_template_tags

     在指定的應用下,創建模板標籤的目錄結構。



  • describe_form

     輸出模型的表單定義,可以粘貼到 

    forms.py

     文件中。(需要注意的是,這種方法創建的是普通 Django 表單,而不是模型表單。)



  • notes

     輸出你項目里所有帶 TODO、FIXME 等標記的注釋。





    Django-extensions 還包括幾個有用的抽象基類,在定義模型時,它們能滿足常見的模式。當你需要以下模型時,可以繼承這些基類:




    • TimeStampedModel

      :這個模型的基類包含了 

      created

       欄位和 

      modified

       欄位,還有一個 

      save()

       方法,在適當的場景下,該方法自動更新 

      created

       和 

      modified

       欄位的值。



    • ActivatorModel

      :如果你的模型需要像 

      status

      activate_date

       和 

      deactivate_date

       這樣的欄位,可以使用這個基類。它還自帶了一個啟用 

      .active()

       和 

      .inactive()

      查詢集的 manager。



    • TitleDescriptionModel

       和 

      TitleSlugDescriptionModel

      :這兩個模型包括了 

      title

       和 

      description

       欄位,其中 

      description

       欄位還包括 

      slug

      ,它根據 

      title

       欄位自動產生。





      django-extensions 還有其他更多的功能,也許對你的項目有幫助,所以,去瀏覽一下它的

      文檔

      吧!


      12 因子應用的配置:django-environ


      在 Django 項目的配置方面,

      django-environ

       提供了符合 

      12 因子應用

       方法論的管理方法。它是另外一些庫的集合,包括 

      envparse

       和 

      honcho

       等。安裝了 django-environ 之後,在項目的根目錄創建一個 

      .env

       文件,用這個文件去定義那些隨環境不同而不同的變數,或者需要保密的變數。(比如 API 密鑰,是否啟用調試,資料庫的 URL 等)


      然後,在項目的 

      settings.py

       中引入 

      environ

      ,並參考

      官方文檔的例子

      設置好 

      environ.PATH()

       和 

      environ.Env()

      。就可以通過 

      env("VARIABLE_NAME")

       來獲取 

      .env

       文件中定義的變數值了。


      創建出色的管理命令:django-click


      django-click

       是基於 

      Click

       的,(我們

      之前推薦過

      … 

      兩次

       Click),它對編寫 Django 管理命令很有幫助。這個庫沒有很多文檔,但是代碼倉庫中有個存放

      測試命令

      的目錄,非常有參考價值。 django-click 基本的 Hello World 命令是這樣寫的:



      # app_name.management.commands.hello.py


      import

      djclick

      as

      click


      @

      click

      .

      command

      ()


      @

      click

      .

      argument

      (

      "name"

      )


      def

      command

      (

      name

      )

      :


          

      click

      .

      secho

      (

      f

      "Hello, {name}"

      )



      在命令行下調用它,這樣執行即可:



      >>

      .

      /

      manage

      .

      py hello Lacey


      Hello

      ,

      Lacey




      處理有限狀態機:django-fsm


      django-fsm

       給 Django 的模型添加了有限狀態機的支持。如果你管理一個新聞網站,想用類似於「寫作中」、「編輯中」、「已發布」來流轉文章的狀態,django-fsm 能幫你定義這些狀態,還能管理狀態變化的規則與限制。


      Django-fsm 為模型提供了 FSMField 欄位,用來定義模型實例的狀態。用 django-fsm 的 

      @transition

       修飾符,可以定義狀態變化的方法,並處理狀態變化的任何副作用。


      雖然 django-fsm 文檔很輕量,不過 

      Django 中的工作流(狀態)

       這篇 GitHub Gist 對有限狀態機和 django-fsm 做了非常好的介紹。


      聯繫人表單:#django-contact-form


      聯繫人表單可以說是網站的標配。但是不要自己去寫全部的樣板代碼,用 

      django-contact-form

       在幾分鐘內就可以搞定。它帶有一個可選的能過濾垃圾郵件的表單類(也有不過濾的普通表單類)和一個 

      ContactFormView

       基類,基類的方法可以覆蓋或自定義修改。而且它還能引導你完成模板的創建,好讓表單正常工作。


      用戶註冊和認證:django-allauth


      django-allauth

       是一個 Django 應用,它為用戶註冊、登錄/註銷、密碼重置,還有第三方用戶認證(比如 GitHub 或 Twitter)提供了視圖、表單和 URL,支持郵件地址作為用戶名的認證方式,而且有大量的文檔記錄。第一次用的時候,它的配置可能會讓人有點暈頭轉向;請仔細閱讀

      安裝說明

      ,在

      自定義你的配置

      時要專註,確保啟用某個功能的所有配置都用對了。


      處理 Django REST 框架的用戶認證:django-rest-auth


      如果 Django 開發中涉及到對外提供 API,你很可能用到了 

      Django REST Framework

      (DRF)。如果你在用 DRF,那麼你應該試試 django-rest-auth,它提供了用戶註冊、登錄/註銷,密碼重置和社交媒體認證的端點(是通過添加 django-allauth 的支持來實現的,這兩個包協作得很好)。


      Django REST 框架的 API 可視化:django-rest-swagger


      Django REST Swagger

       提供了一個功能豐富的用戶界面,用來和 Django REST 框架的 API 交互。你只需要安裝 Django REST Swagger,把它添加到 Django 項目的已安裝應用中,然後在 

      urls.py

       中添加 Swagger 的視圖和 URL 模式就可以了,剩下的事情交給 API 的 docstring 處理。



      API 的用戶界面按照 app 的維度展示了所有端點和可用方法,並列出了這些端點的可用操作,而且它提供了和 API 交互的功能(比如添加/刪除/獲取記錄)。django-rest-swagger 從 API 視圖中的 docstrings 生成每個端點的文檔,通過這種方法,為你的項目創建了一份 API 文檔,這對你,對前端開發人員和用戶都很有用。




      【關於投稿】




      如果大家有原創好文投稿,請直接給公號發送留言。




      ① 留言格式:


      【投稿】+《 文章標題》+ 文章鏈接

      ② 示例:


      【投稿】《不要自稱是程序員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/

      ③ 最後請附上您的個人簡介哈~






      看完本文有收穫?請轉

      發分享給更多人


      關注「P

      ython開發者」,提升Python技能



      喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

      本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


      請您繼續閱讀更多來自 Python開發者 的精彩文章:

      盤點 Python 的目標受眾

      TAG:Python開發者 |