Python之“大而全”web快速开发框架Django

471 阅读9分钟
认识
Django
Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005年7月在BSD许可证下发布。这个名称来源于比利时的爵士音乐家DjangoReinhardt,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SDTimes评选为2013SDTimes100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(DoNotRepeatYourself)原则。
  重点:一个大而全的框架,啥都替你考虑好了。
1. web
框架介绍
  具体介绍
Django
之前,必须先介绍
WEB
框架等概念。
  
web
框架: 别人已经设定好的一个
web
网站模板,你学习它的规则,然后
填空
修改
成你自己需要的样子。
  一般
web
框架的架构是这样的:



  其它基于
python
web
框架,如
tornado
flask
webpy
都是在这个范围内进行增删裁剪的。例如
tornado
用的是自己的异步非阻塞
“wsgi”
flask
则只提供了最精简和基本的框架。
Django
则是直接使用了
WSGI
,并实现了大部分功能。
2. MVC/MTV
介绍
  
MVC
百度百科
:全名
Model View Controller
,是模型
(model)
-视图
(view)
-控制器
(controller)
的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
  
通俗解释
:一种文件的组织和管理形式!不要被缩写吓到了,这其实就是把不同类型的文件放到不同的目录下的一种方法,然后取了个高大上的名字。当然,它带来的好处有很多,比如前后端分离,松耦合等等,就不详细说明了。       
  模型
(model)
:定义数据库相关的内容,一般放在
models.py
文件中。
  视图
(view)
:定义
HTML
等静态网页文件相关,也就是那些
html
css
js
等前端的东西。
  控制器
(controller)
:定义业务逻辑相关,就是你的主要代码。  
  
MTV:
有些
WEB
框架觉得
MVC
的字面意思很别扭,就给它改了一下。
view
不再是
HTML
相关,而是主业务逻辑了,相当于控制器。
html
被放在
Templates
中,称作模板,于是
MVC
就变成了
MTV
。这其实就是一个文字游戏,和
MVC
本质上是一样的,换了个名字和叫法而已,换汤不换药。
3.Django
MTV
模型组织
  目录分开,就必须有机制将他们在内里进行耦合。在
Django
中,
urls
orm
static
settings
等起着重要的作用。一个典型的业务流程是如下图所示:



那么我们学
Django
学的是什么?
1.
目录结构规范
2. urls
路由方式
3. settings
配置
4. ORM
操作
5.
模板渲染
6.
其它


二、
Django
项目实例
1.
程序安装
  
python3.5
pip3
pycharm
专业版自行安装。
1
)安装
Django
  这里只介绍较为简单的
pip3
命令安装方式。
  
win+r
,调出
cmd
,运行命令:
pip3 install django
,自动安装
Pypi
提供的最新版本。


安装完成后如下图所示:
2
)配置系统环境
成功安装
Django
后,在下图中的路径可找到
django-admin.exe
文件,将它加入操作系统环境变量中。这样在以后的调用会比较方便。



运行:
django-admin help
,能看到下面的内容表示
OK


2.
创建
django
项目
  在
linux
等命令行界面下,使用
django
提供的命令和
vim
也能进行项目开发。但是,这里推荐使用
pycharm
这个目前最好的
python
开发
IDE
,它功能强大,界面友好。(下面所有的操作都在
pycharm
中进行。)
  点击:
file-->new project
,出现下面的对话框。


选择
Django
栏目,输入项目名称,这里采用国际惯例的
mysite
。选择
python
解释器版本,点击
create
创建。
Django
将自动生成下面的目录结构:


与项目同名的目录中是配置文件,
templates
目录是
html
文件存放也就是
MTV
中的
T
manage.py
django
项目管理文件。


3.
创建
APP
  在每个
django
项目中可以包含多个
APP
,相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。
所有的
APP
共享项目资源。
  在
pycharm
下方的
terminal
终端中输入命令:
  
python manage.py startapp cmdb
  这样就创建了一个叫做
cmdb
APP
django
自动生成
“cmdb”
文件夹。


4.
编写路由
  路由都在
urls
文件里,它将浏览器输入的
url
映射到相应的业务处理逻辑。
  简单的
urls
编写方法如下图:
5.
编写业务处理逻辑
  业务处理逻辑都在
views.py
文件里。
  通过上面两个步骤,我们将
index
这个
url
指向了
views
里的
index
()函数,它接收用户请求,并返回一个
“hello world”
字符串。
6.
运行
web
服务
  现在我们已经可以将
web
服务运行起来了。
  命令行的方式是:
python manage.py runserver 127.0.0.1:8000
  但在
pycharm
中,你可以这么干:
  在上部工具栏中找到下面图示的图标。


点击下拉箭头
点击
edit configurations
host
中填入:
127.0.0.1
  
port
中填入:
8000
OK
确定之后,点击绿色的三角,
web
服务就运行起来了。
按图所示,自动跳转到浏览器程序界面。显示的却是下图的
404
页面:


修改一下
url
,添加
“/index”
,就一切
ok
了!
至此,一个最简单的
django
编写的
web
服务就启动成功了。
7.
返回
HTML
文件
  上面我们返回给用户浏览器的是什么?一个字符串!实际上这肯定不行,通常我们都是将
html
文件返回给用户。
  下面,我们写这么一个
index.html
文件:


  再修改一下
views
文件:


为了让
django
知道我们的
html
文件在哪里,需要修改
settings
文件的相应内容。但默认情况下,它正好适用,你无需修改。


接下来,我们可以重新启动
web
服务。在浏览器刷新一下,你会看到带有样式的
“hello world”
注:这里有个小技巧,在多次频繁重启服务时,由于端口未释放的原因,容易启动不了服务,修改一下端口就
OK
了。
8.
使用静态文件
  我们已经可以将
html
文件返还给用户了,但是还不够,前端三大块,
html
css
js
还有各种插件,它们齐全才是一个完整
的页面。在
django
中,一般将静态文件放在
static
目录中。接下来,在
mysite
中新建个
static
目录。
你的
CSS,JS
和各种插件都可以放置在这个目录里。
为了让
django
找到这个目录,依然需要对
settings
进行配置:


同样,在
index.html
文件中,可以引入
js
文件了:
重新启动
web
服务,刷新浏览器,查看结果。
9.
接收用户发送的数据
  上面,我们将一个要素齐全的
html
文件返还给了用户浏览器。但这还不够,因为
web
服务器和用户之间没有动态交互。
下面我们设计一个表单,让用户输入用户名和密码,提交给
index
这个
url
,服务器将接收到这些数据。
  先修改
index.html
文件


然后修改
views.py
文件


此时
,重启
web
服务时,会出错,因为
django
有一个
csrf
跨站请求保护机制,我们暂时在
settings
文件中将它关闭,或者在
form
表单里添加一个
`{% csrf_token %}`
标签。这里为了演示方便,我们采用临时关闭的方式。
再次进入浏览器,刷新页面:


输入点东西,然后我们在
pycharm
中可以看到相应的数据。
10.
返回动态页面
  我们收到了用户的数据,但返回给用户的依然是个静态页面,通常我们会根据用户的数据,进行处理后在返回给用户。
这时候,
django
采用自己的模板语言,类似
jinja2
,根据提供的数据,替换掉
html
中的相应部分,详细语法入门后再深入学习。
先改造
views.py
文件:


再改造
index.html
文件:
重启服务,刷新浏览器:


可以看到,我们获得了用户实时输入的数据,并将它实时展示在了用户页面上,这是个不错的交互过程。
11.
使用数据库
  流程走到这里,
django
MTV
框架基本已经浮出水面了,只剩下最后的数据库部分了。
  上面我们虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。
  使用数据库是毫无疑问的,
django
通过自带的
ORM
框架操作数据库,并且自带轻量级的
sqlite3
数据库。下面我们来看一看:
  首先是注册
app


不注册它,你的数据库就不知道该给哪个
app
创建表。
然后我们在
settings
中,配置数据库相关的参数,如果使用自带的
sqlite
,不需要修改。


再编辑
models.py
文件,也就是
MTV
中的
M


这里我们创建了
2
个字段,分别保存用户的名字和密码。
接下来要在
pycharm
teminal
中通过命令创建数据库的表了。有
2
条命令,分别是:
python manage.py makemigrations
再输入命令:
python manage.py migrate


修改
views.py
中的业务逻辑


重启
web
服务后,刷新浏览器页面,之后和用户交互的数据都能保存到数据库中。任何时候都可以从数据库中读取数据,展示到页面上。
至此,一个要素齐全,主体框架展示清晰的
django
项目完成了,其实很简单是不是?


三、
Django
总结

更多免费技术资料可关注:annalin1203