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   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 中添加如下中间件代码:

"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结合起来


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值