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這個變數,在其中增加下面這行:
注意,一定要把它放在最後一行,這樣才能在所有的需要除錯資訊的地方生效;而且要保證你在執行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.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',
)
其他的一些配置選項包括:
- INTERCEPT_REDIRECTS:如果設定為True,那麼在顯示除錯資訊時會有一箇中間頁面,點選後跳轉到一個新的頁面顯示除錯資訊;
- SHOW_TOOLBAR_CALLBACK:如果沒有設定這個變數,或者設定為False,那麼除錯頁面會按照預設的規則顯示,否則如果你需要自定義這個除錯面板的顯示,可以設定為True;
- EXTRA_SIGNALS:這是一個數組,用於傳遞除錯過程中的傳輸資訊;
- HIDE_DJANGO_SQL:如果這個設定為True,那麼Django的資料模型查詢語言將不會顯示SQL資訊;
- SHOW_TEMPLATE_CONTEXT:如果這是為True(預設值),那麼除錯工具的模板會加入到整個專案的模板變數中;
- TAG:如果這是為True,那麼除錯面板將以一個標籤頁的形式顯示,否則會顯示為頁面的一部分;
- 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 debugsqlshellPython 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 中新增如下中介軟體程式碼:
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結合起來