189 8069 5689

一、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
    
    
    
    {% for user in user_list%}
    
        {{user.id}}
        {{user.name}}
        {{user.password}}

    
    {% endfor %}
    




另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:一、2基于wsgiref定义自己的web框架-创新互联
文章起源:http://jkwzsj.com/article/djocgh.html

其他资讯