8個能提高Django開發(fā)效率的Python包
譯文【51CTO.com快譯】這里介紹了一些有關(guān)Django的Python包,這些包將有益于您的工作、個人或業(yè)余項目。
Django開發(fā)人員,我們將在這個月的Python專欄中專門討論一些對您有幫助的包。這些是我們最喜歡的Django庫,能夠幫助我們節(jié)省時間,減少模板代碼,簡化我們的工作流程。這里介紹了六個Django應(yīng)用程序包和兩個Django的REST框架包,當(dāng)我們說這些包幾乎出現(xiàn)在我們工作的每個項目中時,一點也沒有夸張。
但是在此之前,你可以先看看我們之前寫的有關(guān)如何讓Django 管理更加安全的技巧,以及一篇關(guān)于5個最喜歡的開源Django包的文章。
節(jié)省時間的利器:django-extensions
Django-extensions是一個非常受歡迎的Django包,其中包含許多有用的工具,比如下面列出的這些管理命令:
- shell_plus將啟動Django shell,并保證所有數(shù)據(jù)庫模型都已被加載。不再需要從幾個不同的應(yīng)用程序中導(dǎo)入數(shù)據(jù),來測試一個復(fù)雜的關(guān)系!
- clean_pyc命令會將項目目錄中所有位置的.pyc項目刪除。
- create_template_tags用于在您指定的應(yīng)用程序中創(chuàng)建一個模板標(biāo)簽?zāi)夸浗Y(jié)構(gòu)。
- describe_form將顯示模型的表單定義,然后您可以將其復(fù)制/粘貼到forms.py中。(注意,這將生成一個普通的Django表單,而不是一個模型表單。)
- notes命令可以在整個項目中顯示所有帶有TODO、FIXME等內(nèi)容的注釋。
Django-extensions中還包含一些有用的抽象基類,可用于您自己的模型中。在創(chuàng)建模型時你可以從這些基類繼承:
- TimeStampedModel:這個基類包括了創(chuàng)建和修改的字段,以及一個可以自動更新這些字段的save()方法。
- ActivatorModel:如果您的模型需要status、activate_date和deactivate_date等字段,請使用這個基類。它附帶了一個啟用.active()和.inactive()查詢集的管理器。
- TitleDescriptionModel和TitleSlugDescriptionModel:這兩個模型包含了標(biāo)題和描述字段,而后者還包含一個slug字段。slug字段將根據(jù)標(biāo)題字段自動填充。
Django-extensions還有更多你可能會發(fā)現(xiàn)在項目中非常有用的功能,瀏覽一下它的文檔吧!
12要素app設(shè)置:django-environ
Django-environ允許您使用12要素應(yīng)用程序方法來管理Django項目中的設(shè)置。它會收集其他的庫,包括envparse和honcho。安裝完django- environment之后,將在項目的根目錄中創(chuàng)建一個.env文件。在該模塊中定義任何可能在環(huán)境之間更改或應(yīng)該保密的設(shè)置變量(如API密鑰、調(diào)試狀態(tài)和數(shù)據(jù)庫url)。
然后,在項目的settings.py文件中,導(dǎo)入environ并根據(jù)示例為environ.PATH() 和 environ.Env()設(shè)置變量。使用env('VARIABLE_NAME')來訪問.env文件中定義的設(shè)置變量。
創(chuàng)建出色的管理命令:django-click
Django-click,基于Click模塊(我們之前推薦過兩次),可以用來幫助您編寫Django管理命令。這個庫沒有大量的文檔,但是它的存儲庫中有一個測試命令的目錄,非常有用。一個基本的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
支持有限狀態(tài)機:django-fsm
Django-fsm為Django模型添加了對有限狀態(tài)機的支持。如果你在運營一個新聞網(wǎng)站,需要撰寫、編輯和發(fā)表文章,django-fsm可以幫助你定義這些狀態(tài),并管理從一個狀態(tài)轉(zhuǎn)移到另一個狀態(tài)的規(guī)則和限制。
Django-fsm提供了一個FSMField,用于定義模型實例狀態(tài)的model屬性。然后,您可以使用django-fsm的@transition裝飾器來定義將模型實例從一種狀態(tài)移動到另一種狀態(tài)的方法,并處理該轉(zhuǎn)換帶來的任何副作用。
雖然Django -fsm的文檔也很少,但是了解Django中的Workflows(States)是一個基礎(chǔ),它有助于理解有限狀態(tài)機和Django -fsm。
聯(lián)系表格: #django-contact-form
在網(wǎng)站上,聯(lián)系表格是一個經(jīng)常會被需要的東西。但你不需要自己編寫所有的樣板代碼——使用django-contact-form在幾分鐘內(nèi)就可以設(shè)置好自己的代碼。它附帶一個可選的垃圾郵件過濾聯(lián)系人表單類(以及一個常規(guī)的非過濾類)和一個ContactFormView基類,其中包含可以覆蓋或自定義的方法,它會引導(dǎo)您瀏覽創(chuàng)建表單所需的工作模板。
注冊和用戶認(rèn)證:django-allauth
Django-allauth是一款應(yīng)用程序,它提供了用戶注冊、登錄、重置密碼以及通過GitHub或Twitter等外部網(wǎng)站驗證用戶身份的視圖、表單和url。它支持使用電子郵件來進行用戶名身份驗證,并且有大量的文檔記錄。當(dāng)你***次使用它的時候,設(shè)置起來可能會有點混亂;請在自定義設(shè)置時仔細(xì)閱讀安裝說明,以確保使用啟用特定功能所需的所有設(shè)置。
支持Django REST框架來處理用戶身份驗證:django-rest-auth
如果您的Django開發(fā)需要編寫API,那么您可能正在使用Django REST 框架(DRF)。如果您正在使用DRF,您就應(yīng)該了解下django-rest-auth,這是一個支持端點進行用戶注冊、登錄/注銷、密碼重置和社交媒體身份驗證的包(需要添加django-allauth,它可以很好地與django-rest-auth一起工作)。
可視化的Django REST 框架API:django-rest-swagger
Django REST Swagger提供了一個功能豐富的用戶界面,用于與Django REST 框架API進行交互。一旦你安裝了Django REST stawk并將其添加到已安裝的應(yīng)用程序中之后,你就可以將stawk視圖和URL模式添加到你的urls.py文件中去;其余部分將在API的文檔字符串中被處理。
您的API的用戶界面將包含您應(yīng)用的所有端點和可用方法。它還將列出這些端點的可用操作,并使您能夠與API進行交互(例如,添加/刪除/獲取記錄)。它使用API視圖中的docstring來為每個端點生成文檔,為項目創(chuàng)建一組對您、前端開發(fā)人員和用戶有用的API文檔。
原文標(biāo)題:8 Python packages that will simplify your life with Django,作者:Jeff Triplett
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】