Django——web框架(基於wsgiref本身寫)

1、web框架

web框架就是在以上十幾行代碼基礎張擴展出來的,有不少簡單方便使用的方法,大大提升了開發的效率

2、基於wsgiref寫一個web框架

 

 

 models.pyhtml

'''
連接數據庫返回字典格式:
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

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服務端
相關文章
相關標籤/搜索