博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于python的web编程基础
阅读量:6895 次
发布时间:2019-06-27

本文共 4730 字,大约阅读时间需要 15 分钟。

 

一、框架分类

     1、sockect+业务处理

      该类框架有:tornado

2、只有业务逻辑,不包含socket,而是引用第三方组件(socket),这个第三方组件(socket)要遵循的协议就是:wsgi

框架有:django、bottle、flask  主要是逻辑处理、第三方的模块(包含了socket)

3、python中内置了wsgiref,它包含了socket

4、WEB框架原理

二、框架讲解

第一步:

from wsgiref.simple_server import make_serverdef new():    return 'new'def index():    return 'index'#用户请求所有内容封装在变量:environ#返回给用户所有信息变量:start_responsedef RunServer(environ, start_response):    start_response('200 OK', [('Content-Type', 'text/html')])    #获取用户URL    url =  environ['PATH_INFO']    if url == "/new":        ret = new()    elif url == "/index":        ret = index()    else:        ret = "404"    return retif __name__ == '__main__':    httpd = make_server('', 8000, RunServer)    print("Serving HTTP on port 8000...")    httpd.serve_forever()运行结果

 

 

 

 改进版

from wsgiref.simple_server import make_serverdef new():    return 'new'def index():    return 'index'URLS = {    "/new": new,    "/index": index,}#用户请求所有内容封装在变量:environ#返回给用户所有信息变量:start_responsedef RunServer(environ, start_response):    start_response('200 OK', [('Content-Type', 'text/html')])    #获取用户URL    url =  environ['PATH_INFO']    # if url == "/new":    #     ret = new()    # elif url == "/index":    #     ret = index()    # else:    #     ret = "404"    # return ret    if url in URLS.keys():        func_name = URLS[url]        ret = func_name()    else:        ret = "404"    return retif __name__ == '__main__':    httpd = make_server('', 8000, RunServer)    print("Serving HTTP on port 8000...")    httpd.serve_forever()

再进化

from wsgiref.simple_server import make_serverdef new():    return '

asdf

'def index(): return 'index'URLS = { "/new": new, "/index": index,}#用户请求所有内容封装在变量:environ#返回给用户所有信息变量:start_responsedef RunServer(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) #获取用户URL url = environ['PATH_INFO'] # if url == "/new": # ret = new() # elif url == "/index": # ret = index() # else: # ret = "404" # return ret if url in URLS.keys(): func_name = URLS[url] ret = func_name() else: ret = "404" return retif __name__ == '__main__': httpd = make_server('', 8000, RunServer) print("Serving HTTP on port 8000...") httpd.serve_forever()运行结果:

 再向前进化一步

结构:

from wsgiref.simple_server import make_serverdef new():    f = open('new.html','r')    data = f.read()    return datadef index():    return 'index'URLS = {    "/new": new,    "/index": index,}#用户请求所有内容封装在变量:environ#返回给用户所有信息变量:start_responsedef RunServer(environ, start_response):    start_response('200 OK', [('Content-Type', 'text/html')])    #获取用户URL    url =  environ['PATH_INFO']    # if url == "/new":    #     ret = new()    # elif url == "/index":    #     ret = index()    # else:    #     ret = "404"    # return ret    if url in URLS.keys():        func_name = URLS[url]        ret = func_name()    else:        ret = "404"    return retif __name__ == '__main__':    httpd = make_server('', 8000, RunServer)    print("Serving HTTP on port 8000...")    httpd.serve_forever() 运行结果:

 

再向前进化

V-- new.html    
Title

hello you

C -- controller.pydef new(): f = open('new.html','r') data = f.read() return datadef index(): return 'index'def home(): return 'home'路由:urlsimport controllerURLS = { "/new": controller.new, "/index": controller.index, "/home": controller.home,}启动程序:start.pyfrom wsgiref.simple_server import make_serverfrom urls import URLS#返回给用户所有信息变量:start_responsedef RunServer(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) #获取用户URL url = environ['PATH_INFO'] if url in URLS.keys(): func_name = URLS[url] ret = func_name() else: ret = "404" return retif __name__ == '__main__': httpd = make_server('', 8000, RunServer) httpd.serve_forever()

进一步升级:模板

 

看代码:

import osimport timedef new():    f = open(os.path.join('views','new.html'),'r')    data = f.read()    new_data = data.replace('{
{itme}}',str(time.time())) return new_datadef index(): f = open(os.path.join('views', 'index.html'), 'r') data = f.read() return datadef home(): f = open(os.path.join('views', 'home.html'), 'r') data = f.read() return data

 下面引入模块语言:第三方组件jingjia2    安装:pip3 install jingjia2

4、初识tornado框架

自定义:

 

二、web编程之cookie

          1、原理 

                     在浏览器端保存的键值对,特性:每次HTTP请求都会携带;

          2、服务端tornado操作cookie

                    A、查看所有cookie所有对象:self.cookies

                    B、获取cookie对象信息值:self.get_cookie('k1')
                    C、设置cookies对象信息:self.set_cookie('k1','999')

         3、在浏览器上使用javascript

                  A、document.cookie 查找所有cookie对象         

                  B、从上图看,cookie就是一个字符串,因此可采用截取或循环的方式进行

 

          4、带签名的cookie原理

          

5、基于cookiet用户验证

方式一:

方式二:

 

三、web编程之session

session信息保存在服务端,要想使用session信息,还要依赖于cookie对象。

 

转载于:https://www.cnblogs.com/xkjlive/p/9086249.html

你可能感兴趣的文章
『追捕盗贼 Tarjan算法』
查看>>
第十二周学习总结
查看>>
面试题目
查看>>
struts2执行流程
查看>>
nodejs基础学习
查看>>
【windows8开发】异步编程 之Concurrency::task(C++)
查看>>
杭电1873--看病要排队
查看>>
指针 new delete
查看>>
Xadmin显示视图
查看>>
option菜单个数变化
查看>>
Python 函数(可变参数)
查看>>
FFmpeg中HLS文件解析源码
查看>>
IPMI总结
查看>>
配置OWASP的ModSecurity规则
查看>>
laravel 5.1 单元测试 Cannot modify header information 错误
查看>>
周四作业
查看>>
golang 转换markdown文件为html
查看>>
hdu 3016 dp+线段树
查看>>
对象的类型转换
查看>>
maven 下载源码及 Javadoc
查看>>