8個能提高Django開發效率的Python包

2020-12-20 51CTO

【51CTO.com快譯】這裡介紹了一些有關Django的Python包,這些包將有益於您的工作、個人或業餘項目。

Django開發人員,我們將在這個月的Python專欄中專門討論一些對您有幫助的包。這些是我們最喜歡的Django庫,能夠幫助我們節省時間,減少模板代碼,簡化我們的工作流程。這裡介紹了六個Django應用程式包和兩個Django的REST框架包,當我們說這些包幾乎出現在我們工作的每個項目中時,一點也沒有誇張。

但是在此之前,你可以先看看我們之前寫的有關如何讓Django 管理更加安全的技巧,以及一篇關於5個最喜歡的開源Django包的文章。

節省時間的利器:django-extensions

Django-extensions是一個非常受歡迎的Django包,其中包含許多有用的工具,比如下面列出的這些管理命令:

  • shell_plus將啟動Django shell,並保證所有資料庫模型都已被加載。不再需要從幾個不同的應用程式中導入數據,來測試一個複雜的關係!
  • clean_pyc命令會將項目目錄中所有位置的.pyc項目刪除。
  • create_template_tags用於在您指定的應用程式中創建一個模板標籤目錄結構。
  • describe_form將顯示模型的表單定義,然後您可以將其複製/粘貼到forms.py中。(注意,這將生成一個普通的Django表單,而不是一個模型表單。)
  • notes命令可以在整個項目中顯示所有帶有TODO、FIXME等內容的注釋。

Django-extensions中還包含一些有用的抽象基類,可用於您自己的模型中。在創建模型時你可以從這些基類繼承:

  • TimeStampedModel:這個基類包括了創建和修改的欄位,以及一個可以自動更新這些欄位的save()方法。
  • ActivatorModel:如果您的模型需要status、activate_date和deactivate_date等欄位,請使用這個基類。它附帶了一個啟用.active()和.inactive()查詢集的管理器。
  • TitleDescriptionModel和TitleSlugDescriptionModel:這兩個模型包含了標題和描述欄位,而後者還包含一個slug欄位。slug欄位將根據標題欄位自動填充。

Django-extensions還有更多你可能會發現在項目中非常有用的功能,瀏覽一下它的文檔吧!

12要素app設置:django-environ

Django-environ允許您使用12要素應用程式方法來管理Django項目中的設置。它會收集其他的庫,包括envparse和honcho。安裝完django- environment之後,將在項目的根目錄中創建一個.env文件。在該模塊中定義任何可能在環境之間更改或應該保密的設置變量(如API密鑰、調試狀態和資料庫url)。

然後,在項目的settings.py文件中,導入environ並根據示例為environ.PATH() 和 environ.Env()設置變量。使用env('VARIABLE_NAME')來訪問.env文件中定義的設置變量。

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

Django-click,基於Click模塊(我們之前推薦過兩次),可以用來幫助您編寫Django管理命令。這個庫沒有大量的文檔,但是它的存儲庫中有一個測試命令的目錄,非常有用。一個基本的Hello World命令如下:

  1. # app_name.management.commands.hello.py  
  2. import djclick as click  
  3. @click.command()  
  4. @click.argument('name' 
  5. def command(name):  
  6. click.secho(f'Hello, {name}'

然後在命令行中運行:

  1. >> ./manage.py hello Lacey  
  2. Hello, Lacey 

支持有限狀態機:django-fsm

Django-fsm為Django模型添加了對有限狀態機的支持。如果你在運營一個新聞網站,需要撰寫、編輯和發表文章,django-fsm可以幫助你定義這些狀態,並管理從一個狀態轉移到另一個狀態的規則和限制。

Django-fsm提供了一個FSMField,用於定義模型實例狀態的model屬性。然後,您可以使用django-fsm的@transition裝飾器來定義將模型實例從一種狀態移動到另一種狀態的方法,並處理該轉換帶來的任何副作用。

雖然Django -fsm的文檔也很少,但是了解Django中的Workflows(States)是一個基礎,它有助於理解有限狀態機和Django -fsm。

聯繫表格: #django-contact-form

在網站上,聯繫表格是一個經常會被需要的東西。但你不需要自己編寫所有的樣板代碼——使用django-contact-form在幾分鐘內就可以設置好自己的代碼。它附帶一個可選的垃圾郵件過濾聯繫人表單類(以及一個常規的非過濾類)和一個ContactFormView基類,其中包含可以覆蓋或自定義的方法,它會引導您瀏覽創建表單所需的工作模板。

註冊和用戶認證:django-allauth

Django-allauth是一款應用程式,它提供了用戶註冊、登錄、重置密碼以及通過GitHub或Twitter等外部網站驗證用戶身份的視圖、表單和url。它支持使用電子郵件來進行用戶名身份驗證,並且有大量的文檔記錄。當你***次使用它的時候,設置起來可能會有點混亂;請在自定義設置時仔細閱讀安裝說明,以確保使用啟用特定功能所需的所有設置。

支持Django REST框架來處理用戶身份驗證:django-rest-auth

如果您的Django開發需要編寫API,那麼您可能正在使用Django REST 框架(DRF)。如果您正在使用DRF,您就應該了解下django-rest-auth,這是一個支持端點進行用戶註冊、登錄/註銷、密碼重置和社交媒體身份驗證的包(需要添加django-allauth,它可以很好地與django-rest-auth一起工作)。

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

Django REST Swagger提供了一個功能豐富的用戶界面,用於與Django REST 框架API進行交互。一旦你安裝了Django REST stawk並將其添加到已安裝的應用程式中之後,你就可以將stawk視圖和URL模式添加到你的urls.py文件中去;其餘部分將在API的文檔字符串中被處理。

您的API的用戶界面將包含您應用的所有端點和可用方法。它還將列出這些端點的可用操作,並使您能夠與API進行交互(例如,添加/刪除/獲取記錄)。它使用API視圖中的docstring來為每個端點生成文檔,為項目創建一組對您、前端開發人員和用戶有用的API文檔。

原文標題:8 Python packages that will simplify your life with Django,作者:Jeff Triplett

【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO.com】

【責任編輯:

龐桂玉

TEL:(010)68476606】

點讚 0

相關焦點

  • 10道題教你使用python Django框架來實現web應用,值得收藏
    升級python版本後,第三方包的版本需要升級。有的第三方包不支持python3。這個時候可以嘗試使用2to3工具對第三包的python原始碼進行轉換,然後使用。這樣存在一定風險。無法轉換的,需要尋找替代包,應用伺服器上對應的代碼需要修改。關於django升級:django1.5開始支持python3。
  • python程式設計師嘔心瀝血整理 Django 優秀資源大全
    python-webpack, star:58 - webpack 的 Python 綁定包,並與 django 集成。認證增強或擴展了 Django 認證方法的相關包。RESTful API開發 REST API 的包。django-nap, star:176 - 實現對象序列化,RESTful 視圖和 RPC 視圖的一種極簡方式。
  • python測試開發django-76.ORM查詢之Q查詢
    前言ORM 使用 filter() 查詢的時候,當有多個條件的時候,可以使用 Q 查詢Q 查詢 or如有個 Card 模型,表裡面有以下數據
  • Python——用 Django 寫 restful api 接口
    但目前在 python3.x 中,PyMySQL 取代了 MySQLdb。Django 是用 Python 開發的一個免費開源的 Web 框架,可以用於快速搭建高性能,優雅的網站。Django 中提供了開發網站經常用到的模塊,常見的代碼都為你寫好了,減少重複的代碼。
  • Python Django之路與您同行
    主要在這裡寫下自己的學習筆記、軟體測試思考及讀書感悟等,後續可能會系統的介紹一些python、django、移動端自動化測試、接口自動化測試、性能測試等。歡迎您的光臨!要想深入測試,必須了解功能邏輯,對數據流及網站架構比較清楚,這點也說過多次,真的很重要,必須要體現在工作當中,養成習慣,絕對不要對自己測試過的功能模塊其中的技術實現不清楚。這樣測試路會不好走!!!
  • 一個完整的Django入門指南
    對於初學者來說,它是一個Python Web框架,這意味著你可以受益於各種各樣的開源庫包。python軟體包資料庫(pypi)擁有超過11.6萬個軟體包(2017年9月6日的數據)。如果當你想要解決一個特定的問題的時候,可能有人已經為它實現了一個庫來供你使用。Django是用python編寫的最流行的web框架之一。
  • python包管理之pip,其實很簡單!
    官方地址:https://pypi.python.org/pypi/pip下載解壓後,進入目錄直接運行python安裝就可以了python setup.py install(PS:Python3編譯安裝就默認帶了pip了)
  • 推薦一些能提高生產力的 Python 庫
    所以這裡就不再針對於一些特殊的場景推薦了,如一些 Web開發庫、網絡請求庫、數據操作庫、數據分析庫、機器分析庫等等。下面主要羅列一些適用範圍和方向較廣,對於一些基礎設施的建設比較有用,能在多數場景下提高 Python 生產力的庫,描述比較簡單,主要是提供一個列表,僅供參考哈。
  • 用Python加Django十分鐘建個網站
    而Django 是老牌基於Python的CMS框架了,一直聽說很強大,甚至曾經很紅的Ruby On Rails都參考了它的很多概念,今天我們就簡單學習一個首先當然要pip install django然後我們就可以新建一個目錄,在這個目錄下執行django-admin startproject HelloWorld它會創建HelloWord
  • Django開發在線教育網站1
    Django的基本結構現在,我們在使用Python進行網站開發的過程中,不可避免地會使用到Django框架;我們將從一個項目實戰出發來熟悉Django整個開發的流程;便於讓大家在項目開發的過程中,深入地理解Django的使用,以及各個功能模塊的作用
  • Python之Django文件上傳
    一、目標學習在Django下做個文件上傳的頁面、學習創建文件上傳目錄及設定二、試驗平臺windows7 , python3.7,Django2.1.5,三、概述本例較為簡單,僅介紹主要代碼,四、在項目根目錄創建靜態文件夾
  • 使用Python進行網站開發入門指南
    摘要:本文全面介紹了使用Python完成Web開發的基礎入門內容。以一個博客網站為例,講解了基於django框架完成網站開發的全過程,通過本文的學習,讀者就可以快速掌握使用django完成網站開發的方法。
  • django-admin和manage.py用法
    開篇話:我們在Django開發過程中,命令行執行最多的應該就是python manage.py <command>,今天聊聊manage.py這個命令。記錄要點:django-admin和manage.py 能做同樣的事情 像我們常用的python manage.py runserver,用django-admin也可以操作:django-admim runserver 注意: django-admin需要提前提前配置好DJANGO_SETTINGS_MODULE環境變量
  • Django分頁完整示例
    大家好,在這篇文章中,我們將展示django的分頁完整的一個實例,當我們打算用Django中開發博客時,需要將帖子列表分別展示到多個頁面上,在這方面,
  • 5個助你效率提升的python小技巧
    使用交互模式使用python -i xxxx.py可以直接進入python的交互模式,可以很方便的調用xxxx.py中定義的方法和函數,特別適合調試沒有main()方法的文件,強力推薦。使用pdb進行調試很多從c++/java轉到python的同學可能對python沒有斷點功能相當失望。
  • python測試開發django-38.ManyToMany查詢
    前言一個學生可以對應多個老師,一個老師也可以教多個學生,這就是一種多對多的關係models建表Teacher, verbose_name="老師") class Meta: verbose_name = "學生" verbose_name_plural = verbose_name def __str__(self): return self.name之後執行 makemigrations 和migrate,同步數據python
  • 推薦3個提高Python開發效率的小工具
    本文將介紹一些有用的小工具,它們能夠幫助我們提高工作效率。本文將介紹筆者在近一周發現的三個小工具,寫文章以做記錄,希望能對大家有所幫助。
  • Python2.6低版本Python如何實現爬蟲功能
    所以我只能在2.6的Python下開發爬蟲。使用urllib2庫代替requests庫,實現過程基本是一樣的簡單明了。代碼如下#coding=utf-8import urllib2exact_url='https://news.qq.com/zt2020/page/feiyan.htm'try:r=urllib2.urlopen(exact_url) #抓取設定url的數據,可以改成你想獲取的任意地址except urllib2.URLError
  • python Web開發:Django重定向總結part1,為什麼要重定向?
    redirect()函數例子只需在視圖中使用URL調用redirect()。5.如果視圖接收到一個GET請求(或者,準確地說,接收到的不是POST請求的任何類型的請求),它就創建一個ContactForm實例,並使用django.shortcuts.render()來呈現contact_form.html模板。如果用戶現在單擊reload,則只會重新加載/success/ URL。如果沒有重定向,重新加載頁面將重新提交表單並發送另一條消息。
  • 聊聊python面試這件事兒
    隨便分享下我的故事.工作了幾年, 必然面過幾家. 我不是面霸, 但是也肯定有感覺特別奇葩的, 沒對上眼的, 完虐我的,勵志的, 讓我感動的. 讓我感恩的.來個趣事兒國內python圈有名的公司不多. 12年的時候覺得要從運維開發轉型為真正的開發, 面試了某知名公司S. 一直到現在我還覺得他的面試模式很好 - 初步篩選之後會發麵試題, 2個題目任選其一, 一周做好.