溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

簡化Django開發(fā)的八個Python包分別是哪些

發(fā)布時間:2021-10-26 17:54:41 來源:億速云 閱讀:195 作者:柒染 欄目:編程語言

簡化Django開發(fā)的八個Python包分別是哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

這個月的 Python 專欄將介紹一些 Django 包,它們有益于你的工作,以及你的個人或業(yè)余項目。

Django 開發(fā)者們,在這個月的 Python 專欄中,我們會介紹一些能幫助你們的軟件包。這些軟件包是我們最喜歡的 Django 庫,能夠節(jié)省開發(fā)時間,減少樣板代碼,通常來說,這會讓我們的生活更加輕松。我們?yōu)?Django 應(yīng)用準(zhǔn)備了六個包,為 Django 的 REST 框架準(zhǔn)備了兩個包。幾乎所有我們的項目里,都用到了這些包,真的,不是說笑。

不過在繼續(xù)閱讀之前,請先看看我們關(guān)于讓 Django 管理后臺更安全的幾個提示,以及這篇關(guān)于 5 個***的開源 Django 包 的文章。

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

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

  • shell_plus 打開 Django 的管理 shell,這個 shell 已經(jīng)自動導(dǎo)入了所有的數(shù)據(jù)庫模型。在測試復(fù)雜的數(shù)據(jù)關(guān)系時,就不需要再從幾個不同的應(yīng)用里做導(dǎo)入操作了。

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

  • create_template_tags 在指定的應(yīng)用下,創(chuàng)建模板標(biāo)簽的目錄結(jié)構(gòu)。

  • describe_form 輸出模型的表單定義,可以粘貼到 forms.py 文件中。(需要注意的是,這種方法創(chuàng)建的是普通 Django 表單,而不是模型表單。)

  • notes 輸出你項目里所有帶 TODO、FIXME 等標(biāo)記的注釋。

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

  • TimeStampedModel:這個模型的基類包含了 created 字段和 modified 字段,還有一個 save() 方法,在適當(dāng)?shù)膱鼍跋?,該方法自動更?createdmodified 字段的值。

  • ActivatorModel:如果你的模型需要像 status、activate_datedeactivate_date 這樣的字段,可以使用這個基類。它還自帶了一個啟用 .active().inactive() 查詢集的 manager。

  • TitleDescriptionModelTitleSlugDescriptionModel:這兩個模型包括了 titledescription 字段,其中 description 字段還包括 slug,它根據(jù) title 字段自動產(chǎn)生。

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

12 因子應(yīng)用的配置:django-environ

在 Django 項目的配置方面,django-environ 提供了符合 12 因子應(yīng)用 方法論的管理方法。它是另外一些庫的集合,包括 envparse 和 honcho 等。安裝了 django-environ 之后,在項目的根目錄創(chuàng)建一個 .env 文件,用這個文件去定義那些隨環(huán)境不同而不同的變量,或者需要保密的變量。(比如 API 密鑰,是否啟用調(diào)試,數(shù)據(jù)庫的 URL 等)

然后,在項目的 settings.py 中引入 environ,并參考官方文檔的例子設(shè)置好 environ.PATH()environ.Env()。就可以通過 env('VARIABLE_NAME') 來獲取 .env 文件中定義的變量值了。

創(chuàng)建出色的管理命令:django-click

django-click 是基于 Click 的,(我們之前推薦過… 兩次 Click),它對編寫 Django 管理命令很有幫助。這個庫沒有很多文檔,但是代碼倉庫中有個存放測試命令的目錄,非常有參考價值。 django-click 基本的 Hello World 命令是這樣寫的:

# app_name.management.commands.hello.pyimport djclick as click @click.command()@click.argument('name')def command(name):    click.secho(f'Hello, {name}')

在命令行下調(diào)用它,這樣執(zhí)行即可:

>> ./manage.py hello LaceyHello, Lacey

處理有限狀態(tài)機(jī):django-fsm

django-fsm 給 Django 的模型添加了有限狀態(tài)機(jī)的支持。如果你管理一個新聞網(wǎng)站,想用類似于“寫作中”、“編輯中”、“已發(fā)布”來流轉(zhuǎn)文章的狀態(tài),django-fsm 能幫你定義這些狀態(tài),還能管理狀態(tài)變化的規(guī)則與限制。

Django-fsm 為模型提供了 FSMField 字段,用來定義模型實例的狀態(tài)。用 django-fsm 的 @transition 修飾符,可以定義狀態(tài)變化的方法,并處理狀態(tài)變化的任何副作用。

雖然 django-fsm 文檔很輕量,不過 Django 中的工作流(狀態(tài)) 這篇 GitHub Gist 對有限狀態(tài)機(jī)和 django-fsm 做了非常好的介紹。

聯(lián)系人表單:#django-contact-form

聯(lián)系人表單可以說是網(wǎng)站的標(biāo)配。但是不要自己去寫全部的樣板代碼,用 django-contact-form 在幾分鐘內(nèi)就可以搞定。它帶有一個可選的能過濾垃圾郵件的表單類(也有不過濾的普通表單類)和一個 ContactFormView 基類,基類的方法可以覆蓋或自定義修改。而且它還能引導(dǎo)你完成模板的創(chuàng)建,好讓表單正常工作。

用戶注冊和認(rèn)證:django-allauth

django-allauth  是一個 Django 應(yīng)用,它為用戶注冊、登錄/注銷、密碼重置,還有第三方用戶認(rèn)證(比如 GitHub 或 Twitter)提供了視圖、表單和  URL,支持郵件地址作為用戶名的認(rèn)證方式,而且有大量的文檔記錄。***次用的時候,它的配置可能會讓人有點暈頭轉(zhuǎn)向;請仔細(xì)閱讀安裝說明,在自定義你的配置時要專注,確保啟用某個功能的所有配置都用對了。

處理 Django REST 框架的用戶認(rèn)證:django-rest-auth

如果 Django 開發(fā)中涉及到對外提供 API,你很可能用到了 Django REST Framework(DRF)。如果你在用 DRF,那么你應(yīng)該試試 django-rest-auth,它提供了用戶注冊、登錄/注銷,密碼重置和社交媒體認(rèn)證的端點(是通過添加 django-allauth 的支持來實現(xiàn)的,這兩個包協(xié)作得很好)。

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

Django REST Swagger 提供了一個功能豐富的用戶界面,用來和 Django REST 框架的 API 交互。你只需要安裝 Django REST Swagger,把它添加到 Django 項目的已安裝應(yīng)用中,然后在 urls.py 中添加 Swagger 的視圖和 URL 模式就可以了,剩下的事情交給 API 的 docstring 處理。

簡化Django開發(fā)的八個Python包分別是哪些

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI