iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Modern Web

加速你的 Django 網站開發 - Django 的好用套件系列 第 11

11. django-debug-toolbar

django-debug-toolbar 是一個很有名的除錯工具,這個除錯工具的運作,並不是像 gdb 這類的 debugger 那樣,而是以「面板」 (Panel)的形式出現在網頁上。面板裡有這些資訊/功能:

  • Time:從網頁載入到呈現的時間。
  • Settings:設定,點擊以後,會出現 Django 專案的 settings
  • Headers:顯示這次 HTTP 請求的標頭資訊
  • Request:顯示這次 HTTP 請求的內容,會有表單內容等資訊。
  • SQL:這個網頁所使用到的 SQL 敘述以及資料庫查詢所花費的時間。
  • Static files:靜態檔案列表
  • Templates:網頁用到的樣板
  • Cache:快取,顯示網頁有使用到的快取資訊。
  • Signals:信號,Django 內部有埋好通知程式,例如,收到 HTTP 請求時,會發個通知;要儲存物件時,會發個通知。Django 的專案可以撰寫程式來收取這些通知,並作處理。這個面板會列出信號以及你處理這些通知的程序。關於 Signals ,可以參考 Django Signals
  • Logging:有使用 logging 函式庫輸出 log 的話,可以在這邊看到。
  • Intercept redirects:顯示重導向資訊
  • Profiling:性能分析

他的官方文件網址是:https://django-debug-toolbar.readthedocs.io/en/latest/

下面我們就來看怎麼使用吧~

安裝

poetry add django-debug-toolbar

設定

# settings.py
INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    # ...
    'debug_toolbar',
]

STATIC_URL = '/static/'

MIDDLEWARE = [
    # ...
    # ...
]
	if DEBUG:
    # 把這個 middleware 加到第一個
    MIDDLEWARE.insert(0,  'debug_toolbar.middleware.DebugToolbarMiddleware')

INTERNAL_IPS=('127.0.0.1',)
# urls.py
from django.conf import settings
from django.urls import include, path

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns

使用

這個套件很簡單,照上面提到的,設定好,然後確定 DEBUG 是 True 就自動運作了。

之後輸出的網頁會出現下圖

https://ithelp.ithome.com.tw/upload/images/20200911/20012434mkyJ6RqOXP.png

網頁的右邊會出現一整排面板,也就是我們在前面所提到的。不想看到的話,可以按上方的 Hide 來關閉。

https://ithelp.ithome.com.tw/upload/images/20200911/20012434yCKWw3BNzu.png

使用方法也很簡單,點選你想看的項目,那左邊就會出現對應的資訊。

https://ithelp.ithome.com.tw/upload/images/20200911/20012434uKO4ELIF9H.png

django-debug-toolbar 本身設計上,是允許自訂/擴充面板的,因此也有許多人幫他寫擴充套件,畫面上就會多出面板來顯示資訊。例如:djdt-flamegraph ,安裝以後,會有可以出現火焰圖的面板。

小插曲:我試著使用的時候,發現網頁沒出現面板,後來檢查了以後,發現是 INTERNAL_IPS 沒指定。所以在遇到沒出現面板的時候,請檢查一下上面所提到的設定,少了其中一個,就會無法運作。

測試專案網址我放在:https://github.com/elleryq/ithome-iron-2020-django/tree/day-11

結語

從網頁來看這些資訊,像是 SQL、Cache 等等的,對於除錯或是最佳化真的很有幫助,可以省下很多時間。

參考資料


上一篇
10. graphene
下一篇
12. django-bootstrap4
系列文
加速你的 Django 網站開發 - Django 的好用套件30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言