Django + DebugToolbar构建全栈WEB开发

本文深入解析Django框架的特点及优势,包括其强大的ORM、模板引擎、安全性、单元测试支持及debug功能。同时,详细介绍了如何在Ubuntu16.04.4LTS环境下搭建Django开发环境,配置pip源,创建并部署Django项目,以及如何使用django-debug-toolbar增强开发体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django是什么

Django Python 最流行的WEB开发框架,很多公司都用 Django 来做项目,内置的ORM模型非常方便和易用,是一个全能的WEB开发框架。

Django有很多优秀的特性:

  • Python3 完整支持的框架

  • 支持 Sqlite / MySQL / PostgreSQL 等数据库,强大的 migrate 机制,修改对数据库字段变更非常便利,能自动生成变更的SQL语句,并且做规则检查

  • 灵活的模板引擎,通过内置的 Filter Tag 做模板,模板能继承,可以方便的组织模板的框架

  • 安全的框架,不论是 CSRF ,还是 XSS 或者 SQL注入 ,默认的安全选项等级比较高,给很多初学者很好的安全保护

  • 完整的单元测试支持,能模拟 Cookie Session 等场景做集成测试,极大方便了前后端分离的项目的集成测试

  • Debug 功能强大,代码保存后就立即生效, 异常错误后的堆栈信息甚至能看到每个调用帧的局部变量,极大的方便了开发者

  • 非常灵活的扩展,所以产生了很多优秀的扩展

Django-Debug-Toolbar

基于 Django 的灵活扩展,这次推荐一个非常实用的扩展: django-debug-toolbar 。  Django 内置的 Debug 特性,只有在发生异常后能查看异常信息,但是开发过程当中,我们想知道:

  • 数据库调研时间、次数是多少

  • 模板渲染的时间是多久

  • 静态文件访问情况

  • ….

通过 django-debug-toolbar 极大的提升了开发效率,这个教程教会你如何安装在 Django 中使用 django-debug-toolbar

在云服务器上安装Django的开发环境

本教程基于 Ubuntu 16.04.4 LTS Python3 ,开始这个教程前,需要到滴滴云购买一个 Ubuntu 16.04.4 LTS 的云服务器,由于需要提供WEB服务,所以需要买一个带公网IP的云服务器。滴滴云的镜像内置了很多开发工具,比如 python3 sysstat iotop 等常见工具,不需要额外再安装其他工具,非常顺手。

滴滴云的云服务器默认的登录名是 dc2-user , 并不是 root 登录,如果需要 root 操作的指令,需要通过 sudo 操作才能进行,这样确保我们日常的操作不会用 root 这个身份来管理服务器,避免危险的误操作。  如果你习惯用root管理你的服务器,强烈建议改掉这个坏习惯,用sudo吧

通过dc2-user登录服务器

尽量选择用 ssh公钥登录服务器 ,避免输入密码,并且关闭服务器的密码登录,可以极大的提升服务器的安全性,毕竟ssh公钥证书的安全等级比密码安全等级高。

登录后可以看到服务器的信息( YOUR_SERVER_IP 可以替换成你的服务器):

安装Django

Python推荐的包管理工具是 pip ,类似Ubuntu里面的 apt 或者CentOS的 YUM ,通过 pip 能方便的安装常见的安装包。

pip 默认的源是在海外,滴滴云提供了一个默认的 pip 源,避免访问海外的仓库,下载速度非常的快。所以我们需要先配置一下 pip 源。

Django 默认不支持Python2.x,所以我们需要用 pip3 来安装 django  和  django-debug-toolbar

1

2

3

4

dc2 - user @ 10 - 255 - 20 - 246 : ~ $    sudo apt - get install python3 - pip

dc2 - user @ 10 - 255 - 20 - 246 : ~ $    sudo pip3 install django django - debug - toolbar

创建一个Django的项目

安装好 Django 后,可以通过 django-admin 来维护和管理项目。首先,我们创建一个 Django 项目  djsite

创建第一个项目,查看生成的目录结构:

运行你的第一个Django项目

生成的djite目录下有 manage.py ,通过这个文件来做项目的常规操作,比如创建超级管理员、启动服务器。

默认创建的项目的数据库引擎是 sqlite ,创建后的项目需要初始化数据库,确保 django 内置的数据库版本管理、 session 等特性能正常使用。

通过 manange.py migrate 来初始化数据库:

这样就完成了数据库的初始化工作。

启动Web服务器

通过 manange.py runserver 来启动服务器,默认服务器会运行在 127.0.0.1:8000 ,只能本机访问。

你可以通过curl看一下web服务器是否正常运行:

通过公网访问你的云服务器

如果我们需要公网访问,那么就需要让服务器运行在非本机的80端口,但是如果运行在80端口,就需要 root 权限,我们通过sudo 就可以了。

通过公网IP就可以直接访问你的WEB服务器。

修改settings.py

其实这时候如果你直接访问服务器的80端口,会遇到提醒( YOUR_HOST_IP 是你的服务器IP):

1

2

3

DisallowedHost at /

Invalid HTTP_HOST header : 'YOUR_HOST_IP' . You may need to add 'YOUR_HOST_IP' to ALLOWED_HOSTS .

 

这时候就体现了 Django 的默认安全设置很体贴了,避免犯初级错误。
因为你当前的服务器是在 Debug 模式,只能通过 127.0.0.1 的方式来访问,如果你要通过公网访问,有两张方式:

  • 方法一:修改 settings.py Debug = True Debug = False ,关闭Debug模式

  • 方法二:保留 Debug 模式,把你的公网IP加入到 ALLOWED_HOSTS

1

2

ALLOWED_HOSTS = [ 'YOUR_HOST_IP' ]

 


这时候在重新启动服务就可以正常访问了。

1

2

dc2 - user @ 10 - 255 - 20 - 246 : ~ / djsite $ sudo python3 manage . py runserver 0.0.0.0 : 80

 


Django 项目最大的特点是配置文件是 Python ,所以可以把配置当成代码来使用。

引入django-debug-toolbar

要在项目中使用 django-debug-toolbar ,最简单的方式就是修改 settings.py

修改 INSTALLED_APPS :

修改 MIDDLEWARE :

新增 INTERNAL_IPS 选项

通常情况下, django-debug-toolbar 只会对开发者提供展示,如果你是本机开发,只需要允许 127.0.0.1 访问就可以,本次是在服务器上访问,你可以全部放开访问,也可以通过访问 ip.cn 来得到你的出口IP地址,把你的出口IP地址加入到 INTERNAL_IPS 中。

1

2

3

[ jinti @ jintis - MBP : ~ ] $ curl ip . cn

当前 IP : 183.128.190.90 来自 : 浙江省杭州市 电信

 


在这个教程中,把我自己家里的公网ip 183.128.190.90 写入到 INTERNAL_IPS 中。

1

2

INTERNAL_IPS = [ '183.128.190.90' ]

 


修改urls.py

django-debug-toolbar 会在每一个html的请求中注入一段js,我们需要修改一下urls.py,确保这些js资源能正常访问。

访问看看效果

这是可以通过访问 http://YOUR_HOST_IP/admin/ ,测试 django-debug-toolbar 是否正常工作。 注:  需要注意我的云服务器是通过80端口开放服务

如果正常工作后,会在页面的右上角有个浮动的工具栏,可以看 SQL 缓存 模板 的运行时间,特别是 SQL ,你会发现访问一个页面,默认会访问很多数据库访问。

也可以通过看 Request ,分析你的请求携带的信息,帮助你快速分析数据是否提交正确。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31559758/viewspace-2220645/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31559758/viewspace-2220645/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值