django框架原理-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

django框架原理

一、什么是web服务
1.web服务包含两个部分,http服务器,app应用程序.
2.httpd服务器负责解析数据,并封装调用socket请求
3.app应用负责业务逻辑,包括增删改查等操作
4.http服务器一旦接受客户端请求就会解析数据并调用app应用,app解析完数据后返回给http服务,并响应给客户端

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、网站制作、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的武陵源网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

二、客户端和web服务通信,web服务和app应用怎么通信
1.客户端和web服务通信
客户端和web服务通信使用http协议
C/S 模型,
request请求包括:
第一部分:请求行
第二部分:请求头
第三部分:空行
第四部分: 请求体
response包括:
第一部分:状态行,由HTTP/1.1(协议版本) 200(状态码) OK(状态码的描述) 构成
第二部分:响应头,由一些键值对构成,用来说明客户端要使用的一些附加信息
第三部分:空行,响应头后面的空行时必须的
第四部分:响应正文,服务器返回给客户端的文本信息

2.web服务和app使用怎么通信
在web服务和app应用之间需要定义一个接口规则,或者叫协议,规定两者之间数据通信方式,即web服务以怎样的方式调用app应用.
python规定,web服务的接口规则是wsgi协议,wsgi协议对于server和app接口定义如下:
server调用方式:
response = application(environ, start_response)
application接口编码:
def application(environ, start_response):
status = '200 OK'
response_headers = [('Content-Type', 'text/plain'),]
start_response(status, response_headers)
return [b'hello',]

只要遵从上述调用方式,均实现了wsgi协议.

python内置了wsgiref模块,用于提供server服务,django使用此模块开发测试,但是生产环境使用其他模块来处理
一次web服务到app响应的流程图如下:

django 框架原理

三、定义一个简单的wsgi服务器框架
django框架的server部分由python内置的wsgiref模块提供,我们只需要编写application应用程序部分
from wsgiref.simple_server import make_server

def app(environ, start_response): # wsgi协议规定的application部分的编码形式,可在此基础上扩展
status = '200 OK'
respones_headers = []

start_response(status, response_headers)
return [b'hello',]
if name == 'main':
httpd = make_server('127.0.0.1', 8080, app)
httpd.serve_forever()

wsgi框架请求响应流程:
django 框架原理

四、django的server实现
django使用的server是基于python内置的wsgiref模块的simple_server,每次django启动都会执行run函数,run函数会调用server_forver方法,此步骤会执行socket_server的循环执行,这样就能不断监听客户端的请求,server端调用application响应用户请求

五、django的application实现
django的application是通过WSGIhandle的一个实例来实现,此实例可以被回掉,然后根据wsgi的接口规则传入environ和start_response。所以本质上,django就是使用的内置python提供的wsgiref.simple_server再对application进行丰富的封装。大部分的django编码工作都在application部分

六、django调用链
django 框架原理


分享文章:django框架原理
网页链接:http://kswsj.cn/article/gepsjj.html

其他资讯