Django——web框架(基于wsgiref自己写) - Go语言中文社区

Django——web框架(基于wsgiref自己写)


一、web框架

web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率

二、基于wsgiref写一个web框架

 

 

 models.py

'''
链接数据库返回字典格式:
cursor=pymysql.cursors.DictCursor
'''

import pymysql
#连接数据库
conn = pymysql.connect(host='127.0.0.1',port= 3306,user = 'root',passwd='123456',db='web') #db:库名
#创建游标
cur = conn.cursor()

sql='''
create table userinfo(
        id INT PRIMARY KEY ,
        name VARCHAR(32) ,
        password VARCHAR(32)
)

'''

cur.execute(sql)

#提交
conn.commit()
#关闭指针对象
cur.close()
#关闭连接对象
conn.close()
models.py

myserver.py

wsgiref模块内部帮我们实现 了socket,实现web服务

from wsgiref.simple_server import make_server
from urls import url_patters


def server(environ, start_response):  # 必须传两个参数
    start_response('200 OK', [('Content-Type', 'text/html')])
    func=None
    for item in url_patters:
        if item[0] == environ.get('PATH_INFO'):
            func = item[1]
            break
    if func:
        data = func(environ, start_response)
    else:
        data='error'.encode('utf-8')

    return [data]


if __name__ == '__main__':
    myserver = make_server('127.0.0.1', 8081, server)
    myserver.serve_forever()
myserver.py

urls.py

# 路径和函数对应关系

from views import *
url_patters = [
    ('/login', login),
    ('/index', index),
    ('/time', time),
    ('/order', order),
]
urls.py

views.py

def login(environ, start_response):
    with open('templates/login.html', 'rb') as f:
        data = f.read()
    return data


def index(environ, start_response):
    with open('templates/index.html', 'rb') as f:
        data = f.read()
    return data


def time(environ, start_response):
    import time
    with open('templates/time.html', 'r', encoding='utf-8') as f:
        #                replace(替换前 ,替换后)
        data = f.read().replace('{{time}}', str(time.time()))

    return data.encode('utf-8')


def order(environ, start_response):
    return 'order'.encode('utf-8')
views.py

tempaltes下backend.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
登录成功
</body>
</html>
tempaltes下backend.html

tempaltes下index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
index
</body>
</html>
tempaltes下index.html

tempaltes下login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h4>登录页面</h4>
<form action="http://127.0.0.1:8011/login" method="post">
     用户名 <input type="text" name="user">
     密码 <input type="text" name="pwd">
    <input type="submit">
</form>
</body>
</html>
tempaltes下login.html

其它socket服务端

'cgi': CGIServer,
    'flup': FlupFCGIServer,
    'wsgiref': WSGIRefServer,
    'waitress': WaitressServer,
    'cherrypy': CherryPyServer,
    'paste': PasteServer,
    'fapws3': FapwsServer,
    'tornado': TornadoServer,
    'gae': AppEngineServer,
    'twisted': TwistedServer,
    'diesel': DieselServer,
    'meinheld': MeinheldServer,
    'gunicorn': GunicornServer,
    'eventlet': EventletServer,
    'gevent': GeventServer,
    'geventSocketIO':GeventSocketIOServer,
    'rocket': RocketServer,
    'bjoern' : BjoernServer,
    'auto': AutoServer,
其它socket服务端

 

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/guojieying/p/13732310.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-15 23:05:56
  • 阅读 ( 1266 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢