一、2基于wsgiref定义自己的web框架-创新互联
目录结构:除了templates目录下的html文件,其他文件都是属于平行关系
创新互联公司网络公司拥有十年的成都网站开发建设经验,1000+客户的共同信赖。提供成都网站设计、成都做网站、网站开发、网站定制、外链、建网站、网站搭建、成都响应式网站建设、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务C:.
│ index.html
│ url.py
│ views.py
│ wsgirefServer.py
├───templates
│ index.html
│ test.html
│ time.html
│ user.html
wsgirefServer.py
# make_server : 类似下面的代码,把这些封装好以后,成了 make_server # import socket # server=socket.socket() # server.bind(('127.0.0.1',8001)) # server.listen(5) # while True: # conn,client_address=server.accept() # data=conn.recv(1024) from wsgiref.simple_server import make_server # from url import urls # from views import error # env :已经把下面这些封装好以后,把类似my_diango.py 中的'/index' 路径 从env中取出来即可,这个env 既是字典,也是对像。(把请求头切分好以后,放进字典里面) # data = conn.recv(1024) # conn.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n') from url import urls from views import error def run(env, response): print(env) response("200 ok", [('Content-type', 'text/html')]) position = env['PATH_INFO'] func = None for url in urls: if position == url[0]: func = url[1] break if func: response = func(env) else: response = error(env) return [response.encode('utf-8'), ] if __name__ == '__main__': server = make_server('127.0.0.1', 8003, run) # run 相当于一个装饰器,在run函数之前做了件事,运行run 后,又在run函数之前做了件事,固定用法 server.serve_forever()
url.py
from views import * urls = [ ('/index', index), ('/time', time), ('/test', test), ('/user', user), ]
views.py
import datetime from jinja2 import Template import pymysql def index(env): with open('templates/index.html', 'r') as f: data = f.read() return data def time(env): ctime = datetime.datetime.now().strftime('%Y-%m-%d %X') with open('templates/time.html', 'r') as f: data = f.read() data = data.replace('@@time@@', ctime) return data def error(env): return '404' def test(env): with open('templates/test.html', 'r') as f: data = f.read() tem = Template(data) response = tem.render(user={'name': 's_jun', 'age': 18}) return response def user(env): conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', db='db2', password='mariadb.123') # 获得游标,并且查询结果数据是字典格式 cur = conn.cursor(pymysql.cursors.DictCursor) # 执行sql cur.execute('select * from user') # 获取全部查询结果 dic = cur.fetchall() print(dic) with open('templates/user.html', 'r') as f: data = f.read() tem = Template(data) response = tem.render(user_list=dic) return response
index.html
index h2
h3
templates目录下的html文件
index.html
index h2
h3
test.html
test {{user.name}} {{user.age}}
time.html
time @@time@@
user.html
Title
id | name | password |
---|---|---|
{{user.id}} | {{user.name}} | {{user.password}} |
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文标题:一、2基于wsgiref定义自己的web框架-创新互联
网站地址:http://scyanting.com/article/djocgh.html