Django
是
Python
最流行的WEB开发框架,很多公司都用
Django
来做项目,内置的ORM模型非常方便和易用,是一个全能的WEB开发框架。
Django有很多优秀的特性:
Python3
完整支持的框架
支持
Sqlite
/
MySQL
/
PostgreSQL
等数据库,强大的
migrate
机制,修改对数据库字段变更非常便利,能自动生成变更的SQL语句,并且做规则检查
灵活的模板引擎,通过内置的
Filter
与
Tag
做模板,模板能继承,可以方便的组织模板的框架
安全的框架,不论是
CSRF
,还是
XSS
或者
SQL注入
,默认的安全选项等级比较高,给很多初学者很好的安全保护
完整的单元测试支持,能模拟
Cookie
、
Session
等场景做集成测试,极大方便了前后端分离的项目的集成测试
Debug
功能强大,代码保存后就立即生效, 异常错误后的堆栈信息甚至能看到每个调用帧的局部变量,极大的方便了开发者
非常灵活的扩展,所以产生了很多优秀的扩展
基于
Django
的灵活扩展,这次推荐一个非常实用的扩展:
django-debug-toolbar
。
Django
内置的
Debug
特性,只有在发生异常后能查看异常信息,但是开发过程当中,我们想知道:
数据库调研时间、次数是多少
模板渲染的时间是多久
静态文件访问情况
….
通过
django-debug-toolbar
极大的提升了开发效率,这个教程教会你如何安装在
Django
中使用
django-debug-toolbar
。
本教程基于
Ubuntu 16.04.4 LTS
与
Python3
,开始这个教程前,需要到滴滴云购买一个
Ubuntu 16.04.4 LTS
的云服务器,由于需要提供WEB服务,所以需要买一个带公网IP的云服务器。滴滴云的镜像内置了很多开发工具,比如
python3
、
sysstat
、
iotop
等常见工具,不需要额外再安装其他工具,非常顺手。
滴滴云的云服务器默认的登录名是
dc2-user
, 并不是
root
登录,如果需要
root
操作的指令,需要通过
sudo
操作才能进行,这样确保我们日常的操作不会用
root
这个身份来管理服务器,避免危险的误操作。
如果你习惯用root管理你的服务器,强烈建议改掉这个坏习惯,用sudo吧
尽量选择用 ssh公钥登录服务器 ,避免输入密码,并且关闭服务器的密码登录,可以极大的提升服务器的安全性,毕竟ssh公钥证书的安全等级比密码安全等级高。
登录后可以看到服务器的信息(
YOUR_SERVER_IP
可以替换成你的服务器):
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-admin
来维护和管理项目。首先,我们创建一个
Django
项目
djsite
。
创建第一个项目,查看生成的目录结构:
生成的djite目录下有
manage.py
,通过这个文件来做项目的常规操作,比如创建超级管理员、启动服务器。
默认创建的项目的数据库引擎是
sqlite
,创建后的项目需要初始化数据库,确保
django
内置的数据库版本管理、
session
等特性能正常使用。
通过
manange.py migrate
来初始化数据库:
这样就完成了数据库的初始化工作。
通过
manange.py runserver
来启动服务器,默认服务器会运行在
127.0.0.1:8000
,只能本机访问。
你可以通过curl看一下web服务器是否正常运行:
如果我们需要公网访问,那么就需要让服务器运行在非本机的80端口,但是如果运行在80端口,就需要
root
权限,我们通过sudo 就可以了。
通过公网IP就可以直接访问你的WEB服务器。
其实这时候如果你直接访问服务器的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
,最简单的方式就是修改
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' ]
|
django-debug-toolbar
会在每一个html的请求中注入一段js,我们需要修改一下urls.py,确保这些js资源能正常访问。
这是可以通过访问
http://YOUR_HOST_IP/admin/
,测试
django-debug-toolbar
是否正常工作。 注:
需要注意我的云服务器是通过80端口开放服务
如果正常工作后,会在页面的右上角有个浮动的工具栏,可以看
SQL
、
缓存
、
模板
的运行时间,特别是
SQL
,你会发现访问一个页面,默认会访问很多数据库访问。
也可以通过看
Request
,分析你的请求携带的信息,帮助你快速分析数据是否提交正确。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31559758/viewspace-2220645/ ,如需转载,请注明出处,否则将追究法律责任。