Django框架

学习目的:

完成web应用的编写

django的作用:

0.业务逻辑分发(路由分发)

1.业务逻辑实现:

业务逻辑根据分发来完成具体的事,再根据具体事的需求,和页面或数据库交互,返回处理后的结果

2.页面模板的渲染

3.数据库的交互

b/s架构

brower浏览器:不用自己写

server服务端:需要使用支持wsgi的server,也不用自己写

Python的web框架

a.socket b.页面路由 c.模块渲染

1.Django a 用的wsgiref b 自己写 c自己写,

优点:功能全面

2.Flask a用的第三方,b自己写的,c自己写的,

优点:小而轻

3.Tornado a 自己写 b 自己写 c自己写

优点:支持高并发

http协议

hyperText Transport Protocol超文本传输协议
1.基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
2.基于请求-响应模式:通信一定是从客户端开始,服务端接收到客户端一定会做出对应响应
3.无状态:协议不对任何一次通信状态和任何数据做保存
4.无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接

http工作原理(事务)

一次http操作称之为一个事务,工作过程可分为四步:
1.客户端与服务端建立连接
2.客户端发生一个http协议指定格式的请求
3.服务器端接收到请求后,响应一个http协议指定格式的响应
4.客户端将服务器的响应显示展现给用户

http指定格式的请求和响应

请求:
1.请求行
请求行以一个方法符号开头,以空格分开,后面跟着请求的URL和协议的版本。
POST (请求方式)/login(请求路径)/ HTTP/1.1(请求协议)\r\n
2.请求头
请求头包括本机信息、浏览器信息等等,当然,也包括URL中?后面的参数
3.请求体
需要发送的数据
GET:请求体放在请求路径后拼接
POST:以数据包方式单独发送 request.method
响应
1.响应行
2.响应头
3.响应体
响应行是必须的,其他可选
HTTP/1.1 200 OK\r\n
\r\n
LOGIN success
响应行,响应头,响应体之间以\r\n分隔
响应头各行之间也需要以\r\n区分结束 使用TCP/IP协议的套接字给网页响应时
需要遵循http协议
正确的响应
响应头决定响应体返回什么样的方式数据
browser.send(b"HTTP/1.1 200 OK\r\n")#响应行必须有
browser.send(b'Content-type:text/html\r\n')#响应头,服务于响应体(了解)
browser.send(b"\r\n")#响应行,响应头,响应体之间需要\r\n
browser.send(b'hello world')
browser.close()#无连接,1次请求-响应后断开连接]

wsgi的server

from wsgiref import simple_server

#请求的数据被解析在env字典中
#res规定http的响应结果
#返回的是装有二进制数据的列表
#请求路径:env["PATH_INFO"]
#请求方法:env["REQUEST_METHOD"]
#res("200 OK",[("Content-type,'text/html'")])
def app(env,res):
res("200 OK",[("Content-type","text/html")])
return [] server = simple_server.make_server('127.0.0.1',8803,app)
#服务常启
server.serve_forever()

数据的获取

1.get请求
数据在env的query_string字段中
res = env(QUERY_STRING)#是二进制数据...
2.post请求
数据长度content_length
数据存放的io流 wsgi.input
lenth = int(env["CONTENT_LENGTH"])
res = env["wsgi.input"].read(lenth)

使用jinja2渲染动态网页

1.from jinja2 import Template
2.读取文件
with open("login.html","rt")as f:
msg = f.read()
3.渲染数据得到模板tem
tem = Template(msg)
4.模块替换数据
msg = tem.render(result=res)
return msg.encode("utf-8")
result 在 html 中的表示{{result}}
使用模块的好处:(可以传字典)
tem.render(result = res,my_dic = dic) html
{{my_dic}}
{% for k in my_dic %}
<div>{{k}}:{{my_dic[k]}}
</div>
{% endfor %}

django(django框架了解,http协议)的更多相关文章

  1. Django框架01 / http协议、web框架本质

    Django框架01 / http协议.web框架本质 目录 Django框架01 / http协议.web框架本质 1.http协议 1.1 http协议简介 1.2 什么是http协议 1.3 H ...

  2. 记Angular与Django REST框架的一次合作(1):分离 or 不分离,it's the question

    前言:本次尝试源于我们内部的一个项目,由于前端逻辑比较复杂,就打算将前后端分开来开发.由于之前用Django开发过软件,对Angular.js(Angular 1.0版)也有一定的了解,因此就将技术路 ...

  3. 记Angular与Django REST框架的一次合作(2):前端组件化——Angular

    注:这是这个系列的第二部分,主要集中在Angular的使用方面.之前使用过AngularJS(Angular 1.x),混在Django的模板中使用,这些页面一般完全是结果展示页.在有Django表单 ...

  4. Django—— 缓存框架

    译者注:1.无用的,吹嘘的说辞不翻译:2.意译,很多地方不准确. 动态网站最为重要的一点就是好,网页是动态的.每一次用户请求页面,网站就要进行各种计算——从数据库查询,到render模板,到各种逻辑运 ...

  5. django 基础框架学习 (一)

    Django-01 Web框架 1.Web应⽤程序处理流程  : 2.Web框架的意义            1.⽤于搭建Web应⽤程序            2.免去不同Web应⽤相同代码部分的重复 ...

  6. Linux(CentOS7)系统中部署Django web框架

    1. 概述 部署django和vue架在逻辑上可以分为web层与数据库层:web前端通过实现了WSGI协议的模块对python代码进行解析,而python代码中则通过特定于数据库的操作接口对数据库进行 ...

  7. Django _web框架本质

    Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. socket服务端 import  ...

  8. 教程:Visual Studio 中的 Django Web 框架入门

    教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ...

  9. 12、Django简易框架

    安装:  tar -zxvf Django-1.5.1.tar.gz   cd Django-1.5.1 [root@likun Django-1.5.1]# ls [root@likun Djang ...

  10. [oldboy-django][1初始django]web框架本质 + django框架 + ajax

    web框架本质 浏览器(socket客户端) - 发送请求(ip和端口,url http://www.baidu.com:80/index/) - GET 请求头(数据请求行的url上: Http1. ...

随机推荐

  1. Codeigniter CI 框架的一些优化思考

    前段时间使用CI做了两个小项目,对CI的流程和设计理念也有了一些新的认识.CI架构的一些基本优化这里就不做介绍了,如搬离system 文件夹等. 最近有一个稍微大一点的系统,也准备拿CI来做.设计时遇 ...

  2. 安卓linux真机调试

    原文链接:https://www.zhihu.com/question/35517675 你使用的是Linux,请遵以下步骤执行. 以root用户执行adb kill-server 以root用户执行 ...

  3. H5网站加载速度优化总结

    1. 在代码文件结构 尽量优化的同时,能力再强已经到极限了,但你服务器辣鸡,搭配不当,你代码优化上天 也是徒劳啊. 2.你不怎么优化, 服务器 各种技术配置到位的话, now你也看到了,我一个系统首页 ...

  4. Eclipse优化工具Optimizer for Eclipse

    第一次看到是Optimizer for Eclipse是在InfoQ 然后使用了一下,发现不错啊,我的好几年的破本都能比较快的启动Eclipse了 好了,废话不说了,来介绍一下Optimizer fo ...

  5. Android View 背景选择器编写技巧

    在项目中选择器的使用是非常多的,以下是本人在项目中的一些常用的背景选择器的写法 带边框下划线背景选择器效果图: 上面布局中放了10个CheckBox,然后设置了CheckBox的背景图片位,背景选择器 ...

  6. Hadoop2.6.2的Eclipse插件的使用

    欢迎转载,且请注明出处,在文章页面明显位置给出原文连接. 本文链接:http://www.cnblogs.com/zdfjf/p/5178197.html 首先给出eclipse插件的下载地址:htt ...

  7. linux 删除文件后空间没有释放的解决办法

    清空没用的文件,当我删除文件后,发现可用空间沒有变化 os:centos4.7 现象: 发现当前磁盘空间使用情况: [root@ticketb ~]# df -hFilesystem          ...

  8. Slacklining 2017/2/7

    原文 Proline Slacklining's expansion is still in process,but it already has a professional scene.Some ...

  9. Nodejs + Jshint自动化静态代码检查

    1.   目的 提交代码前能够自动化静态代码检查,提高代码质量 2.   准备 1.    Nodejs安装: 官方地址:http://nodejs.org/ 安装说明:根据电脑配置下载对应的版本进行 ...

  10. shiro : java.lang.IllegalArgumentException: Odd number of characters.

    shiro使用的时候: java.lang.IllegalArgumentException: Odd number of characters.    at org.apache.shiro.cod ...