簡化 Django 開發的八個 Python 包
| 2018-10-05 21:41 收藏: 2
這個月的 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 文件,這對你,對前端開發人員和使用者都很有用。
via: https://opensource.com/article/18/9/django-packages
作者:Jeff Triplett 選題:lujun9972 譯者:belitex 校對:wxy
相關文章
- 簡化PHP開發的11個工具PHP
- 簡化PHP開發的10個工具PHP
- 【知識分享】Python開發簡化程式碼的6個技巧!Python
- 用Python簡化安卓開發系列Python安卓
- Python Django開發的WebSSH 堡壘機PythonDjangoWeb
- 20 個簡化開發任務的 JavaScript 庫JavaScript
- python中web開發框架Django的學習PythonWeb框架Django
- 12個有助簡化CSS3開發的工具CSSS3
- python django專案開發總結PythonDjango
- 學點簡單的Django之第一個Django程式Django
- 草根學Python(八) 模組與包Python
- Omni/USDT PHP 開發包簡介PHP
- 利用 Python 的 package 機制簡化 utils 包設計PythonPackage
- 分分鐘教你Python Web開發框架DjangoPythonWeb框架Django
- Ubuntu下Python & Django開發環境搭建UbuntuPythonDjango開發環境
- 【Python】基於Django Web開發清單PythonDjangoWeb
- 基於Python+Django+Jquery架構的Web開發PythonDjangojQuery架構Web
- [開源]eCharts配置簡化包OptionCreator[typescript版]EchartsTypeScript
- “Python Web應用開發框架Django速成”公開課PythonWeb框架Django
- 利用Python框架django開發資產管理系統Python框架Django
- Python & PyCharm & Django 搭建web開發環境(續)PythonPyCharmDjangoWeb開發環境
- Django開發流程Django
- 這幾個庫讓 Django Web 開發事半功倍DjangoWeb
- 我如何用Django開發一個專案Django
- 如何用Python開發一個簡單的Webkit瀏覽器PythonWebKit瀏覽器
- .NET開發人員必知的八個網站網站
- 記錄一個 NPM 包的開發 -- smmsNPM
- 使用Django開發簡單介面:文章增刪改查Django
- 構建健壯 Python 包的 5 個簡單規則Python
- Android開發技巧——PagerAdapter再簡單的包AndroidAPT
- 安裝python-devel開發包Pythondev
- 開發一個好專案:八、建立viewView
- 開發的藝術,化繁為簡
- Composer 包開發居然這麼簡單
- python_Django簡單的登入頁面PythonDjango
- Python開發中,為什麼Django框架很重要?PythonDjango框架
- 如何在Linux安裝Python+JDK+Mysql+Tomcat+Django以及簡單的跑一個java web專案和一個簡單的Django專案LinuxPythonJDKMySqlTomcatDjangoJavaWeb
- 《Python高效開發實戰》實戰演練——開發Django站點1PythonDjango