Django工作流程

今天学习了Django的工作流程: 

一张流程图告诉你,django的处理流程: 

 

URL组成: 

作为网站的用户,我们首先在浏览器的输入框内输入:http://127.0.0.1:8000/index/ 

协议类型:HTTP,FTP 

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等 。 

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。 

主机地址itest.info  ,127.0.0.1 

前者是一个网址,网址通过域名解析服务器会找到对应的IP地址。后者就是一个IP地址。 

127.0.0.1 指向的就是本机的IP地址。 

端口号: 8000 

端口号用于区分标识同一台主机的不同应用。一台主机上有很多应用,你访问我这台主机时如果指定的是8000,那么就是知道是你来访问我用django开发的blog的。当然,这个端口是可以任意分配的。 

路径 : /index/  、/admin 

一般用来表示主机上的一个目录或文件地址。 

 

urls的配置 

django通过urls.py配置文件很好的处理了前端请求的指向,其中使用使用Python的正则表达式可以使匹配变得更灵活。 

打开django下面的urls.py文件: 

 

r'^index/$' 

这是一个使用了python的正则表达式。 

字符串有前面加“ r ”是为了防止字符串中出现类似“\t”字符时被转义。 

django在拿到URL地址后,取端口号后面的文件夹路径(/index/)进行配置,结果^index/$ 可以对这个文件路径进行匹配。那么将指向blog.views.index 这个地址. 

 

 

model模型 

 Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述。Django也使用模型来呈现SQL无法处理的高级概念。模型用于数据库的创建,在settings.py文件中配置数据库的连接, 

在应用的的models.py文件中创建模型,为了避免直接操作数据库,通过创建模型去生成对应的数据库表。 

 

执行数据库同步会创建一张BlogsPost表,表分别会有title、body、timestamp三个字段。其中title定义为char类型,定义最长150字符;body为text文本类型;timestamp为日期时间类型。 

我们不用关心到底怎么创建表,只要创建好模型就好了,剩下的由djnago来帮我们生成对应的表。下面是将模型创建成数据库表的命令: 

1.Python manage.py makemigrations 

相当于 在该app下建立 migrations目录,并记录下你所有的关于models.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件你可以手动打开这个文件,看看里面是什么在此之后执行命令 

2.Python manage.py migrate 

将该改动作用到数据库文件,比如产生table之类 

当makemigrations之后产生了0001_initial.py 文件,你可以查看下该migrations会对应于什么样子的SQL命令 

python manger.py sqlmigrate theapp 0001 

 

Views 视图 

视图可以看作是前端与数据库的中间人,他会将前端想要的数据从数据库中读出来给前端。他也会将用户要想保存的数据写到数据库。 

Views.py 

 

这里index函数做了两件事儿: 

blog_list =BlogsPost.objects.all() 

查询到BlogsPost数据库里的所有数据,赋值给blog_list变量。 

return render_to_response('index.html',{'blog_list':blog_list}) 

通过render_to_response() 返回给浏览器一个index.html页面,并且将blog_list变量的值也返回给index.html。 

 

自django1.3开始:render()方法是render_to_response的一个崭新的快捷方式,前者会自动使用RequestContext。而后者必须coding出来,这是最明显的区别,当然前者更简洁。
 

templates模板 

模板就是我们所熟悉的页面了,django自带的有模板系统。它的主要作用是如何展示数据,比如视图返回了一堆数据过来。是都循环显示出来呢?还通过判断只显示你认为有用的呢? 当然,这里为了使页面更漂亮需要借助前端技术,比如css、JavaScript等。 

 

 大白话:

http://127.0.0.1:8000/index 这么一个地址,浏览器直接输入的话就是get方法,8000前面的是服务器的地址,后面是url也就是你view.py里面定义的,当把这个请求发送到后台时,服务器会去解析,有没有对应的url匹配(在view.py里面),如果有,那最后调用什么方法来处理,这里就是用的index方法。index方法传入一个参数request,这个就是请求,所以你可以写个if判断,他的请求方法是get还是post

,如果是get,那么怎么处理(例如,可以返回一个字符串hello Jack!;也可以返回一组数据,那就是返回到一个html上,然后这个响应带有要返回的数据,就是这里的data,然后你html上就要去解析这个data,用某种语法,这里暂时可以不考虑)。如果是post,那这个请求会带有参数(例如,这里是username和password),那你就可以把这个参数取出来(request.post.get()),取出来之后要怎么处理,就看你的业务逻辑是怎么样(例如,这里想验证这个对不对,那就可以,比较一下username是不是等于**,如果等于,就返回成功,否则返回失败)。这里的返回,之前说了的有两种,直接返回字符串就直接httpresponse,返回html的话,就要新建一个html文件(前面那个是index.html,是用来登陆的对吧,现在验证你登陆情况的,有可能成功或者失败)例如,创建一个successful.html,里面有登陆成功这几个字。。。。

posted @ 2017-09-13 10:27  子夕1992  阅读(789)  评论(0编辑  收藏  举报