django 常用組件


Django是一款高級的Python Web框架,可以幫助開發者快速創建web應用。我們這里整理了30款Django開發中常用的軟件包,學會使用它們可以節省大量開發時間,提高開發效率。下面一起來看下。  

認證和授權 

1. Python social auth 

一款社交賬號認證/注冊機制,支持Django、Flask、Webpy等在內的多個開發框架,提供了約50多個服務商的授權認證支持,如Google、Twitter、新浪微博等站點,配置簡單。

GitHub 地址:https://github.com/pennersr/django-allauth

文檔地址:https://django-allauth.readthedocs.io/en/latest/

點評:增強 Django 內置的 django.contrib.auth 模塊,提供登錄、注冊、郵件驗證、找回密碼等一切用戶驗證相關的功能。另外還提供 OAuth 第三方登錄功能,例如國內的微博、微信登錄,國外的 GitHub、Google、facebook 登錄等,幾乎囊括了大部分熱門的第三方賬戶登錄。配置簡單,開箱即用。

pip install python-social-auth

2. Django Guardian 

Django默認沒有提供對象(Object)級別的權限控制,我們可以通過該擴展來幫助Django實現對象級別的權限控制。  

pip install django-guardian

3. Django OAuth Toolkit 

可以幫助Django項目實現數據、邏輯的OAuth2功能,可與Django REST框架完美整合起來。  

pip install django-oauth-toolkit

4. django-allauth 

可用於賬號注冊、管理和第三方社交賬號的認證。

django-allauth 是一個能夠解決你的注冊和認證需求的、可重用的 Django 應用。無論你需要構建本地注冊系統還是社交賬戶注冊系統,django-allauth 都能夠幫你做到。

這個應用支持多種認證體系,比如用戶名或電子郵件。一旦用戶注冊成功,它還可以提供從無需認證到電子郵件認證的多種賬戶驗證的策略。同時,它也支持多種社交賬戶和電子郵件賬戶。它還支持插拔式注冊表單,可讓用戶在注冊時回答一些附加問題。

django-allauth 支持多於 20 種認證提供者,包括 Facebook、Google、微博 和 微信。如果你發現了一個它不支持的社交網站,很有可能通過第三方插件提供該網站的接入支持。這個項目還支持自定義后端,可以支持自定義的認證方式,對每個有定制認證需求的人來說這都很棒。

django-allauth 易於配置,且有完善的文檔。該項目通過了很多測試,所以你可以相信它的所有部件都會正常運作。

pip install django-allauth

5. Celery 

用來管理異步、分布式的消息作業隊列,可用於生產系統來處理百萬級別的任務。

django-celery是django web開發中執行異步任務或定時任務的最佳選擇。它的應用場景包括:

●異步任務: 當用戶觸發一個動作需要較長時間來執行完成時,可以把它作為任務交給celery異步執行,執行完再返回給用戶。這點和你在前端使用ajax實現異步加載有異曲同工之妙。

●定時任務。假設有多台服務器,多個任務,定時任務的管理是很困難的,你要在不同電腦上寫不同的crontab,而且還不好管理。Celery可以幫助我們快速在不同的機器設定不同任務。

●其他可以異步執行的任務。比如發送短信,郵件,推送消息,清理/設置緩存等。這點還是比較有用的。

pip install Celery

6. Django REST 框架 

構建REST API的優秀框架,可管理內容協商、序列化、分頁等,開發者可以在瀏覽器中瀏覽構建的API。  

REST API 正在迅速成為現代 Web 應用的標准功能。 API 就是簡單的使用 JSON 對話而不是 HTML,當然你可以只用 Django 做到這些。你可以制作自己的視圖,設置合適的 Content-Type,然后返回 JSON 而不是渲染后的 HTML 響應。這是在像 Django Rest Framework(下稱 DRF)這樣的 API 框架發布之前,大多數人所做的。

如果你對 Django 的視圖類很熟悉,你會覺得使用 DRF 構建 REST API 與使用它們很相似,不過 DRF 只針對特定 API 使用場景而設計。一般的 API 設置只需要一點代碼,所以我們沒有提供一份讓你興奮的示例代碼,而是強調了一些可以讓你生活的更舒適的 DRF 特性:

●可自動預覽的 API 可以使你的開發和人工測試輕而易舉。你可以查看 DRF 的示例代碼。你可以查看 API 響應,並且不需要你做任何事就可以支持 POST/PUT/DELETE 類型的操作。

●便於集成各種認證方式,如 OAuth, Basic Auth, 或API Tokens。

●內建請求速率限制。

●當與 django-rest-swagger 組合使用時,API 文檔幾乎可以自動生成。

●廣泛的第三方庫生態。

pip install djangorestframework

7. Django stored messages 

可以很好地集成在Django的消息框架中(django.contrib.messages)並讓用戶決定會話過程中存儲在數據庫中的消息。  

8. django-cors-headers 

一款設置CORS(Cross-Origin Resource Sharing)標頭的應用,基於XmlHttpRequest,對管理Django應用中的跨域請求非常有幫助。  

pip install django-cors-headers

9. Debug toolbar 

可在設置面板顯示當前請求/響應的各種調試信息。除了本身提供的操作面板外,還有來自社區的多個第三方面板。

該工具給django web開發提供了強大的調試功能,包括查看執行的sql語句,db查詢次數,request,headers,調試概覽等。 通過安裝插件Pympler,你還可以了解內存使用情況。  

pip install django-debug-toolbar

靜態資源 

10. Django Storages 

可使靜態資源方便地存儲在外部服務上。安裝后只需運行“python manage.py collectstatic”命令就可以將全部改動的靜態文件復制到選定的后端。可結合庫“python-boto”一起使用,將靜態文件存儲到Amazon S3上。  

pip install django-storages

11. Django Pipeline 

靜態資源管理應用,支持連接和壓縮CSS/Javascript文件、支持CSS和Javascript的多種編譯器、內嵌JavaScript模板,可充分允許自定義。  

pip install django-pipeline

12. Django Compressor 

可將頁面中鏈接的以及直接編寫的JavaScript和CSS打包到一個單一的緩存文件中,以減少頁面對服務器的請求數,加快頁面的加載速度。  

pip install django_compressor

13. Reversion 

為模型提供版本控制功能,稍微配置后,就可以恢復已經刪除的模型或回滾到模型歷史中的任何一點。最新版本支持Django 1.6。  

pip install django-reversion

14. Django extensions 

Django框架的擴展功能集合,包括management命令擴展、數據庫字段擴展、admin后台擴展等。  

pip install django-extensions

15. Django braces 

是一系列可復用的行為、視圖模型、表格和其他組件的合集。  

pip install django-braces

16.django-haystack - 全文檢索引擎

全文檢索不同於標題的簡單匹配,是一件技術難度比較高的活。當文章很長時,你很難找到精確的匹配,同時搜索全文需要消耗大量的計算資源。有了haystack,你可以直接django中直接添加搜索功能,像搜索標題一樣搜索全文,而無需關注索引建立、搜索解析等技術問題。haystack支持多種搜索引擎,不僅僅是whoosh,使用solr、elastic search等搜索,也可通過haystack,而且直接切換引擎即可,甚至無需修改搜索代碼。

GitHub 地址:https://django-haystack.readthedocs.io/en/master/

文檔地址:https://github.com/django-haystack/django-haystack

17.django-ckeditor - 富文本編輯器

django沒有提供官方的富文本編輯器,而ckeditor恰好是內容型網站后台管理中不可或缺的控件。ckeditor是一款基於javascript,使用非常廣泛的開源網頁編輯器。它允許用戶直接編寫圖文,插入列表和表格,並支持文本和HTML格式代碼輸入。

GitHub 地址:https://github.com/django-ckeditor/django-ckeditor

18.django-imagekit - 自動化處理圖像

現代網站開發一般免不了處理一些圖片,例如頭像、用戶上傳的圖片等內容。django-imagekit 幫你配合 django 的 model 模塊自動完成圖片的裁剪、壓縮、生成縮略圖、加水印等一系列圖片相關的操作。

GitHub 地址:https://github.com/matthewwithanm/django-imagekit

文檔地址:http://django-imagekit.rtfd.org/

19.django-xadmin - 更美觀更強大的后台

如果你不喜歡django自帶后台admin簡陋的樣式,你可以使用xadmin。xadmin是基於bootstrap和admin的一個更強大的后台管理系統。應該會給有強迫症的你帶來驚喜。

GitHub 地址:https://github.com/sshwsfc/xadmin

文檔地址:https://xadmin.readthedocs.io/en/docs-chinese/

20.django-constance - 常量管理

有時我們會在 django 的 settings 中設置一些常量,但是有可能會進行變更。利用這個包,只需簡單的配置就可以自動生成 admin 管理后台可以修改管理常量。

Django 的好處就是大而全,不僅內置了 ORM、表單、模板引擎、用戶系統等,而且第三方應用的生態也是十分完善,開發中大部分常見的功能都能找到對應的第三方實現。在這里給大家推薦 10 個十分優秀的 Django 第三方庫(GitHub 星星數基本都在 1000 以上,而且都在持續維護與更新中)。雖然這些庫很適合用於社交網站的開發,但也有很大一部分是通用的,可以用於任何用 Django 開發的項目。使用這些庫將大大提高開發效率和生產力。

21.django-model-utils

簡介:增強 Django 的 model 模塊。內置了一些通用的 model Mixin,例如 TimeStampedModel 為模型提供一個創建時間和修改時間的字段,還有一些有用的 Field,幾乎每個 Django 項目都能用得上。

GitHub 地址:https://github.com/jazzband/django-model-utils

文檔地址:http://django-model-utils.readthedocs.io/en/latest/

22.django-crispy-forms

簡介:大大增強 Django 內置的表單功能,Django 內置的表單生成原生的 HTML 表單代碼還可以,但為其設置樣式是一個麻煩的事情。django-crispy-forms 幫助你使用一行代碼渲染一個 Bootstrap 樣式的表單,當然它還支持其它一些熱門的 CSS 框架樣式的渲染。

GitHub 地址:https://github.com/django-crispy-forms/django-crispy-forms

文檔地址:http://django-crispy-forms.rtfd.org/

23.django-mptt

簡介:配合 Django 的 ORM 系統,為數據庫的記錄生成樹形結構,並提供便捷的操作樹型記錄的 API。例如可以使用它實現一個多級的評論系統。總之,只要你的數據結構可能需要使用樹來表示,django-mptt 將大大提高你的開發效率。

GitHub 地址:https://github.com/django-mptt/django-mptt

文檔地址:https://django-mptt.readthedocs.io/

24.django-contrib-comments

簡介:用於提供評論功能,最先集成在 django 的 contrib 內置庫里,后來被移出來單獨維護。這個評論庫提供了基本的評論功能,但是只支持單級評論。好在這個庫具有很好的拓展性,基於上邊提到的 django-mptt,就可以構建一個支持層級評論的評論庫。

GitHub 地址:https://github.com/django/django-contrib-comments

文檔地址:https://django-contrib-comments.readthedocs.io/

25.django-brace

簡介:django 內置的 class based view 很 awesome,但還有一些通用的類視圖沒有包含在 django 源碼中,這個庫補充了更多常用的類視圖。類視圖是 django 的一個很重要也很優雅的特性,使用類視圖可以減少視圖函數的代碼編寫量、提高視圖函數的代碼復用性等。

GitHub 地址:https://github.com/brack3t/django-braces

文檔地址:http://django-braces.readthedocs.io/en/latest/index.html

點評:深入學習類視圖可以看Django類視圖源碼分析。

26.django-notifications-hq

簡介:為你的網站提供類似於 GitHub 這樣的通知功能。未讀通知數、通知列表、標為已讀等等。

GitHub 地址:https://github.com/django-notifications/django-notifications

文檔地址:https://pypi.python.org/pypi/django-notifications-hq/

27.django-simple-captcha

簡介:配合 django 的表單模塊,方便地為表單添加一個驗證碼字段。對驗證性要求不高的需求,例如注冊表單防止機器人自動注冊等使用起來非常方便。

GitHub 地址:https://github.com/mbi/django-simple-captcha

文檔地址:http://django-simple-captcha.readthedocs.io/en/latest/

28.django-anymail

簡介:配合 django 的 email 模塊,只需簡單配置,就可以使用 Mailgun、SendGrid 等發送郵件。

GitHub 地址:https://github.com/anymail/django-anymail

文檔地址:https://anymail.readthedocs.io/

29.django-activity-stream

簡介:社交類網站免不了關注、收藏、點贊、用戶動態等功能,這一個 app 全搞定。甚至用它實現一個朋友圈也不是不可能。

GitHub 地址:https://github.com/justquick/django-activity-stream

文檔地址:http://django-activity-stream.rtfd.io/en/latest/

30.Datatables

是一款jquery表格插件。它是一個高度靈活的工具,可以將任何HTML表格添加高級的交互功能。

官網:https://datatables.net/ 中文網站:http://datatables.club/

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM