Django Debug Toolbar 是开发Django应用程序时的必备工具,可以输出详细的调试信息,会话信息等,大大方便开发。下面的文章描述了如何安装Django Debug Toolbar。
首先,保证你的Python环境安装了easy setup tools,如果你还没有安装,请在这里下载。在Windows平台下,下载那个ez_setup.py,然后执行它。跟着会下载一些必要的文件。
然后,我们开始安装Django Debug Toolbar,首先在这里下载相应的安装包,这是一个压缩文件。解压缩后在文件夹目录下执行以下命令:
这样你就把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将显示后台的堆栈信息。
下面是一个配置选项的例子:
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打印出来:
Python 2.6.1 (r261: 67515 , Jul 7 2009 , 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. models import 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 中:
完成。
如果你安装了Pinax 0.7.3版本的话,只需要以下三步:
要启用这个APP只要简单的三步:
1. 在项目 settings.py 文件中添加如下代码:
INTERNAL_IPS = ('127.0.0.1',)
DEBUG_TOOLBAR_CONFIG = {
"INTERCEPT_REDIRECTS": False,
}
2. MIDDLEWARE_CLASSES 中添加如下中间件代码:
3. 将debug_toolbar 加到 INSTALLED_APPS 中:
如果你安装了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结合起来