Django项目的开发过程中,离不开各种调试,那么,我们今天介绍一个工具,django debug toolbar,该工具为我们提供了更加丰富的调试信息,如提供session信息,SQL查询信息等等。 该插件配置简单,功能齐全,在调试中相当方便,而且灵活轻便。那么我们此次就通过一个django的demo来演示该插件的用法。


环境:PyCharm2018 + Python3.5.4 + win10


No.1 下载django debug toolbar

pip install django-debug-toolbar

No.2 新建django的demo,来演示该工具的用法

pip install django==1.1                # 下载django
djnago-admin startproject UT          # 新建Django项目
# cd UT                        # 切换到项目目录
python manage.py startapp app01        # 新建应用
python manage.py runserver 0.0.0.0:8888   # 启动项目

浏览器启动之后输入:http://127.0.0.1:8888/

OK,django项目创建完成,我们填充内容。

No.3 数据迁移

# 此时在项目目录
python manage.py makemigrations
python manage.py migrate

No.4 填充代码

 from django.conf.urls import include, url
from django.contrib import admin
from app01 import views
from UT import settings
urlpatterns = [
# Examples:
# url(r'^$', 'UT.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
# url(r'^$', views.index),
url(r'^admin/', include(admin.site.urls)),
url(r'^login/', views.login),
url(r'^index/', views.index), ] # 加上一个debug路由 if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/',include(debug_toolbar.urls))
] + urlpatterns

urls.py

 from django.shortcuts import render, redirect
from app01 import models
# Create your views here. def login(request):
if request.method == 'GET':
return render(request,'login.html')
elif request.method == 'POST': user = request.POST.get('user')
pwd = request.POST.get('pwd')
# 下面两行代码把数据保存到数据库,然后有了用户名和密码,就可以注释掉了
# models.User.objects.create(user=user, pwd=pwd)
# models.User.objects.all()
# 查询
user_obj = models.User.objects.filter(user=user, pwd=pwd)
if user_obj:
u = user_obj.first()
print(u.user)
print(u.pwd)
request.session['a'] = user + pwd
return redirect('/index')
def index(request):
a = request.session['a']
print(a)
return render(request, 'index.html')

views.py

 from django.db import models

 # Create your models here.
class User(models.Model):
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=32)

models.py

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>index</title> </head>
<body>
<div>
<h1>successful</h1>
</div>
</body>
</html>

index.html

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>login</title>
</head>
<body>
<div>
<form action="http://127.0.0.1:8888/login/" method="post">
{% csrf_token %}
<input type="text" name="user" id="" placeholder="username">
<input type="password" name="pwd" id="" placeholder="password">
<input type="submit" name="" id="" value="提交"> </form> </div>
</body>
</html>

login.html

No.5 配置django debug toolbar

1. 如果在本地调试的话, 在settings内添加:

INTERNAL_IPS = ['127.0.0.1', ]

2. 在settings的INSTALLED_APPS添加。如下图所示:

'app01',            # 如果有则不用添加,一般创建的时候,django默认不添加
'debug_toolbar', # 必填

3. 在settings内的MIDDLEWARE_CLASSES添加:

'debug_toolbar.middleware.DebugToolbarMiddleware',

注意,尽量往上添加,因为有些请求没有走完全部中间件就返回了,导致该工具没有检测到。

4. 在settings内配置jQuery的URL

注意,因为该工具默认引用的是:

JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'

Google的在国内估计要挂。所以我们要在下面配置jQuery的URL。

在settings内jQuery的URL配置如下:

DEBUG_TOOLBAR_CONFIG = {
"JQUERY_URL": '//cdn.bootcss.com/jquery/2.2.4/jquery.min.js',
}

或者在源码中修改,打开C:\python35\Lib\site-packages\debug_toolbar\settings.py,打开这个toolbar的settings文件。更换引用地址。

如果,你项目也引用了jQuery,那么将该项置为空,那么toolbar也引用你项目的jQuery。

DEBUG_TOOLBAR_CONFIG = {
"JQUERY_URL": '',
}

5. 在urls内添加,如下图所示:

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

No.6 使用

浏览器地址栏输入:http://127.0.0.1:8888/login/

注意,因为我之前已经在数据库里保存了用户名和密码,所以这里直接就登录了。你们可以打开views中的那两行注释, 先注册两个用户。

可以看到,右侧已经有了toolbar的图标了。这里需要注意的是,toolbar的使用必须应用在模板中,因为它也是模板渲染出来的,如果你用postman之类的,还玩个蛋蛋啊!

点击提交后,页面成功跳转到index,我们可以看到toolbar给我们提供了很多有用的信息,包括Versions版本信息,和其他的有用的信息。

如我们打开SQL,可以看到,这个请求经过了几次SQL操作,耗时多少,SQL操作在项目的什么位置都有显示,非常方便。

No.7 退出使用

因为toolbar这个工具是根据settings中的DEBUG来判断是否启用,那么,当settings中的DEBUG等于False的时候,toolbar就不起作用了。但是退出DEBUG模式的,需要在ALLOW_HOST需要设置host。

ALLOWED_HOSTS = ['127.0.0.1']  # 如果是本机

参考:

  https://www.cnblogs.com/liwenzhou/p/9245507.html          # oldboy的大牛李文周的博客

  https://django-debug-toolbar.readthedocs.io/en/stable/installation.html       # django debug toolbar官网

  https://github.com/jazzband/django-debug-toolbar           # toolbar github

Django-debug-toolbar的使用的更多相关文章

  1. 部署前准备--使用Mysql之Django Debug Toolbar安装以及配置

    python -c "import django ;print(django.__path__);" 查看python的全局配置 vi /usr/local/lib/python3 ...

  2. Django之Django debug toolbar调试工具

    一.安装Django debug toolbar调试工具 pip3 install django-debug-toolbar 如果出错命令为 pip install django_debug_tool ...

  3. 【Django】Django Debug Toolbar调试工具配置

    正在发愁怎么调试Django,就遇到了Django Debug Toolbar这个利器. 先说遇到的问题: 网上也有教程,不过五花八门的,挨个尝试了一遍,也没有成功运行.最后终于找到问题所在: 从开发 ...

  4. django debug toolbar jquery加载配置

    默认加载谷歌cdn的jquery: 显然国内是会悲剧的. 破解方案: 在settings.py中增加以下配置: DEBUG_TOOLBAR_CONFIG = {"JQUERY_URL&quo ...

  5. django debug

    django_debug_toolbar(略). debug toolbar还不够用,看下面. 1. 在对应的位置设置断点 import pdb pdb.set_trace() 2. runserve ...

  6. django DEBUG=False

    在django的settings中. 将DEBUG 设置为False. 会出现 #python manage.py runserver 8888 CommandError: You must set ...

  7. Django debug page XSS漏洞(CVE-2017-12794)

    影响版本:1.11.5之前的版本 访问http://your-ip:8000/create_user/?username=<script>alert(1)</script>创建 ...

  8. Django安装debug tool bar

    1.安装Django Debug Toolbarpip install django-debug-toolbar 2.设置项目的DEBUG属性DEBUG = True 3.INSTALLED_APPS ...

  9. 安装和使用的django的debug_toolbar

    安装和使用的django的debug_toolbar Django Debug Toolbar安装 安装Django Debug Toolbar pip install django-debug-to ...

  10. High Performance Django

    构建高性能Django站点   性能 可用 伸缩 扩展 安全 build 1.审慎引入第三方库(是否活跃.是否带入query.是否容易缓存) 2.db:减少query次数 减少耗时query 减小返回 ...

随机推荐

  1. C#队列Queue实现一个简单的电商网站秒杀程序

    电商的秒杀和抢购,对程序员来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要. 我们 ...

  2. 启动Mysql数据库报错误:-bash: ./start.sh: Permission denied

    linux下安装好Mysql数据库后,输入启动命令: cd /home/homework/mysql && ./start.sh 回车后报如下错误: 原因是:该文件未有相关执行权限 解 ...

  3. Python yield 函数功能

    python中有一个非常有用的语法叫做生成器,所利用到的关键字就是yield.有效利用生成器这个工具可以有效地节约系统资源,避免不必要的内存占用. 一段代码 def test_dict_sort(): ...

  4. trajan

    模板 const int N=10005; struct Edge { int v,next; }edge[5*N]; int dfn[N],low[N]; int stack[N],node[N], ...

  5. artTemplate的使用案列

    (2) https://github.com/aui/art-template/wiki/syntax:simple

  6. Bash 脚本 去除注释

    sed -i "/^#/d;/^ *$/d" /etc/squid/squid.conf

  7. 31、cookie小test

    请尽量使用JQuery进行代码编写,需求如下: 1.  页面初始化样式如图 2. 顶部input框中输入内容,按下回车enter键后,“正在进行” 列表中加入该条内容.   3. 顶部input框中输 ...

  8. vue里的样式添加之行间样式

    一:行间样式 :和绑定其他dom的属性一样, v-bind:style=          <div v-bind:style={backgroundColor:color}>2</ ...

  9. oracle 数据库、实例、服务名、SID

    参考:http://www.zhetao.com/content240 在实际的开发应用中,关于Oracle数据库,经常听见有人说建立一个数据库,建立一个Instance,启动一个Instance之类 ...

  10. Chrome扩展程序——TabCopy:一键复制网页标题和网址

    Chrome扩展程序——TabCopy:一键复制网页标题和网址 - Erik_ly的博客 - CSDN博客 https://blog.csdn.net/u012318074/article/detai ...