今天学习了Django的工做流程: css
一张流程图告诉你,django的处理流程: html
URL组成: 前端
做为网站的用户,咱们首先在浏览器的输入框内输入:http://127.0.0.1:8000/index/ python
协议类型:HTTP,FTP mysql
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可使浏览器更加高效,使网络传输减小。它不只保证计算机正确快速地传输超文本文档,还肯定传输文档中的哪一部分,以及哪部份内容首先显示等 。 正则表达式
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。 sql
主机地址:itest.info ,127.0.0.1 数据库
前者是一个网址,网址经过域名解析服务器会找到对应的IP地址。后者就是一个IP地址。 django
127.0.0.1 指向的就是本机的IP地址。 api
端口号: 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,里面有登录成功这几个字。。。。