1. 程式人生 > >Django Debug Toolbar 的安裝與配置

Django Debug Toolbar 的安裝與配置

Django Debug Toolbar 是開發Django應用程式時的必備工具,可以輸出詳細的除錯資訊,會話資訊等,大大方便開發。下面的文章描述瞭如何安裝Django Debug Toolbar。
首先,保證你的Python環境安裝了easy setup tools,如果你還沒有安裝,請在這裡下載。在Windows平臺下,下載那個ez_setup.py,然後執行它。跟著會下載一些必要的檔案。

然後,我們開始安裝Django Debug Toolbar,首先在這裡下載相應的安裝包,這是一個壓縮檔案。解壓縮後在資料夾目錄下執行以下命令:

python setup.py install

這樣你就把Django Debug Toolbar所需的庫檔案安裝好了。接下來要做的是配置它,使它生效。我們開啟已經建立的Django專案(還沒有開始建立的話可以看

這裡)。
然後在settings.py中找到MIDDLEWARE_CLASSES這個變數,在其中增加下面這行:

'debug_toolbar.middleware.DebugToolbarMiddleware',

注意,一定要把它放在最後一行,這樣才能在所有的需要除錯資訊的地方生效;而且要保證你在執行Django Debug Toolbar時,伺服器的地址是本地(在settings.py中增加變數INTERNAL_IPS = (’127.0.0.1′,));最後,把debug_toolbar這應用程式新增到你的INSTALLED_APPS 變數中。
現在啟動你的Django伺服器並開啟瀏覽器輸入:http://127.0.0.1:8000/ 你應該會看到瀏覽器的右側多了一個區域,可以顯示相關的除錯資訊。
還有一些可選的配置,比如你可以調整在除錯面板上顯示哪些按鈕區域,只要在settings.py中增加下面的程式碼即可:

DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.version.VersionDebugPanel',
'debug_toolbar.panels.timer.TimerDebugPanel',
'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
'debug_toolbar.panels.headers.HeaderDebugPanel',
'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
'debug_toolbar.panels.template.TemplateDebugPanel'
,
'debug_toolbar.panels.sql.SQLDebugPanel',
'debug_toolbar.panels.signals.SignalDebugPanel',
'debug_toolbar.panels.logger.LoggingPanel',
)

其他的一些配置選項包括:

  1. INTERCEPT_REDIRECTS:如果設定為True,那麼在顯示除錯資訊時會有一箇中間頁面,點選後跳轉到一個新的頁面顯示除錯資訊;
  2. SHOW_TOOLBAR_CALLBACK:如果沒有設定這個變數,或者設定為False,那麼除錯頁面會按照預設的規則顯示,否則如果你需要自定義這個除錯面板的顯示,可以設定為True;
  3. EXTRA_SIGNALS:這是一個數組,用於傳遞除錯過程中的傳輸資訊;
  4. HIDE_DJANGO_SQL:如果這個設定為True,那麼Django的資料模型查詢語言將不會顯示SQL資訊;
  5. SHOW_TEMPLATE_CONTEXT:如果這是為True(預設值),那麼除錯工具的模板會加入到整個專案的模板變數中;
  6. TAG:如果這是為True,那麼除錯面板將以一個標籤頁的形式顯示,否則會顯示為頁面的一部分;
  7. ENABLE_STACKTRACES:如果這是為True將顯示後臺的堆疊資訊。

下面是一個配置選項的例子:

def custom_show_toolbar(request):
    return True # 表示總是顯示除錯面板.

DEBUG_TOOLBAR_CONFIG = {
    'INTERCEPT_REDIRECTS': False,
    'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar,
    'EXTRA_SIGNALS': ['myproject.signals.MySignal'],
    'HIDE_DJANGO_SQL': False,
    'TAG': 'div',
    'ENABLE_STACKTRACES' : True,
}

這個工具的另一個非常有用的功能是,你可以在命令列中顯示Django除錯資訊,比如下面的例子中可以將Django資料模型執行查詢時的SQL打印出來:

$ ./manage.py debugsqlshell
Python 2.6.1 (r261:67515, Jul  72009,23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from page.modelsimport Page
>>> ### Lookup and use resulting in an extra query...
>>> p = Page.objects.get(pk=1)
SELECT "page_page"."id",
       "page_page"."number",
       "page_page"."template_id",
       "page_page"."description"
FROM "page_page"
WHERE "page_page"."id" = 1

>>> print p.template.name
SELECT "page_template"."id",
       "page_template"."name",
       "page_template"."description"
FROM "page_template"
WHERE "page_template"."id" = 1

Home
>>> ### Using select_related to avoid 2nd database call...
>>> p = Page.objects.select_related('template').get(pk=1)
SELECT "page_page"."id",
       "page_page"."number",
       "page_page"."template_id",
       "page_page"."description",
       "page_template"."id",
       "page_template"."name",
       "page_template"."description"
FROM "page_page"
INNER JOIN "page_template" ON ("page_page"."template_id"="page_template"."id")
WHERE "page_page"."id" = 1

>>> print p.template.name
Home

總之,如果你使用Django進行開發,強烈建議你安裝這個工具,它會讓你事半功倍。


  django-debug-toolbar是一個可配置的設定面板顯示有關當前各種除錯資訊的請求/響應和點選時,顯示有關該小組的內容更多的細節。為django站點增加除錯功能,支援檢視django生成的sql語句,及sql的執行時間等,功能強大。Django Debug Toolbar真是個非常不錯的工具。應用它可以帶給開發django程式的簡便。


要啟用這個APP只需要簡單的幾步:

1. 從http://pypi.python.org/pypi/django-debug-toolbar/ 下載 django-debug-toolbar-0.8.3.tar.gz 原始碼壓縮包

2. 將 debug-toolbar 目錄新增到Python路徑PYTHONPATH中,即:/home/wwwroot/pinax-dev/lib/python2.6/site-packages 中

3. 在專案 settings.py 檔案 MIDDLEWARE_CLASSES 中新增如下中介軟體程式碼:

"debug_toolbar.middleware.DebugToolbarMiddleware",
MIDDLEWARE_CLASSES 的順序非常重要: Debug Toolbar中介軟體必須在所有處理 response內容的中介軟體的後面(比如GZipMiddleware)

4. 在專案 settings.py 檔案中新增如下程式碼:

INTERNAL_IPS = ('127.0.0.1',)
DEBUG_TOOLBAR_CONFIG = {
    "INTERCEPT_REDIRECTS": False,
}


5. 在TEMPLATE_DIRS 中加入debug toolbar 的模板路徑:

TEMPLATE_DIRS= (....
'path/to/debug_toolbar/templates' ,)


6. 將debug_toolbar 加到 INSTALLED_APPS 中:
"debug_toolbar",

完成。


如果你安裝了Pinax 0.7.3版本的話,只需要以下三步:

要啟用這個APP只要簡單的三步:

1. 在專案 settings.py 檔案中新增如下程式碼:

INTERNAL_IPS = ('127.0.0.1',)
DEBUG_TOOLBAR_CONFIG = {
    "INTERCEPT_REDIRECTS": False,
}


2. MIDDLEWARE_CLASSES 中新增如下中介軟體程式碼:
"debug_toolbar.middleware.DebugToolbarMiddleware",

3. 將debug_toolbar 加到 INSTALLED_APPS 中:
"debug_toolbar",

如果你安裝了Pinax 0.9及以上版本的話,預設已經啟用了debug_toolbar , 如下圖:

django form的驗證處理

處理分為兩部分:

1form自身處理

2views裡的處理

form自身處理:

假如我們定義一個使用者的表單

class Member(model.ModelFrom):

    def clean_username(self): 這個是對form裡面的<input type="text" name="username">進行驗證
        """驗證帳號"""
        ....

   如果我們有個需求需要驗證比如密碼和重複密碼是否相同的話。這樣驗證單個欄位的方法就沒有用了

  用下面這個就可以解決了

  def clean(self):

   這裡就可以驗證超過2個欄位的資料

           password = self.cleaned_data.get('password', '').strip()
        password1 = self.cleaned_data.get('password1','').strip()
        if password and password1 and  password != password1:
            msg = u'兩次密碼輸入不一致'
            self._errors["password1"] = ErrorList([msg])
            del self.cleaned_data["password1"]
        return self.cleaned_data

哈哈,django的form神奇把

2view的處理:

    if 'POST' == request.method:
        article = Domain.objects.filter(id=aid)[0]
        form = DomainForm(request.POST,instance=article)#這個是把request請求的資料和forml繫結起來

        if form.is_valid():#form驗證處理
            form.save()#如果驗證通過的話。把form的資料新增到資料庫裡

如果我們在新增資料到資料庫前需要處理一些資料,再入庫的話,就可以用到下面一個方法了

   m = form.save(commit=False)

 m.title = 'sss'

 m.save()


            return HttpResponseRedirect('')
        else:
            tmp['form'] = form#這裡是資料沒有通過驗證的話

    else:
        article = Domain.objects.filter(id=aid)[0]
        tmp['form'] = DomainForm(instance=article)  這個是把django的form和Model結合起來