wsgiref
from wsgiref.simple_server import make_server
from urls import urls
from views import error
def run(request, response):
"""
:param request:跟请求相关的数据
:param response: 跟响应相关的数据
:return: 返回值就是要给前端浏览器的数据
"""
response(\'200 OK\',[])
# print(request) # 自动帮我们处理了所有http协议相关的数据并组织成了一个大字典
target_url = request.get(\'PATH_INFO\') # /login
# if target_url == \'/index\':
# return [b\'from index\']
# elif target_url == \'/login\':
# return [b\'from login\']
# 提前定义一个存储函数名的变量
func = None
for url_tuple in urls: # (\'/index\',index)
if target_url == url_tuple[0]:
func = url_tuple[1] # func = index
break
# 需要注意可能会出现func找不到对应项
if func:
res = func(request)
else:
res = error(request)
return [res.encode(\'utf8\')]
if __name__ == \'__main__\':
# 监听127.0.0.1:8080 一旦有请求 立刻将第三个参数加括号调用
server = make_server(\'127.0.0.1\', 8080, run)
# 启动服务端
server.serve_forever()
urls
from views import *
urls = [
(\'/index\', index),
(\'/login\', login),
(\'/reg\', register),
(\'/func\',func),
(\'/get_time\',get_time),
(\'/get_dict\',get_dict),
(\'/get_user\',get_user)
]
views
def index(request):
# return \'index页面\'
with open(r\'templates/index.html\', \'r\', encoding=\'utf8\') as f:
return f.read()
def login(request):
return \'login页面\'
def error(request):
return \'404 error\'
def register(request):
return \'register页面\'
def func(request):
return \'func页面\'
from datetime import datetime
def get_time(request):
# 先获取当前时间
ctime = datetime.now().strftime(\'%Y-%m-%d %X\')
# 读取一个html文件
with open(r\'templates/get_time.html\', \'r\', encoding=\'utf8\') as f:
data = f.read() # 字符串
data = data.replace(\'sdjksajdkjsdjk\', ctime)
return data
from jinja2 import Template
user = {\'username\': \'jason\', \'pwd\': 123, \'hobby\': [\'read\', \'study\']}
def get_dict(request):
with open(r\'templates/get_dict.html\', \'r\', encoding=\'utf8\') as f:
data = f.read()
res = Template(data)
temp = res.render({\'user_dict\': user})
return temp
import pymysql
def get_user(request):
# 1.先获取数据库表数据
conn = pymysql.connect(
host=\'127.0.0.1\',
port=3306,
user=\'root\',
password=\'123\',
database=\'db8\',
charset=\'utf8\',
autocommit=True
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = \'select * from user\'
cursor.execute(sql)
data_list = cursor.fetchall() # [{},{},{},{}]
# 2.文件操作读取文件内容
with open(r\'templates/get_user.html\',\'r\',encoding=\'utf8\') as f:
data = f.read()
# 3.jinja2模块
res = Template(data)
tmp = res.render({\'data_list\':data_list})
return tmp
get_user
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">"> </head> <body> <div class="container"> <div class="row"> <h1 class="text-center">用户数据</h1> <div class="col-md-8 col-md-offset-2"> <table class="table table-hover table-striped"> <thead> <tr> <th>编号</th> <th>姓名</th> <th>密码</th> </tr> </thead> <tbody> {% for user_dict in data_list %} <tr> <td>{{user_dict.id}}</td> <td>{{user_dict.name}}</td> <td>{{user_dict.pwd}}</td> </tr> {% endfor %} </tbody> </table> </div> </div> </div> </body> </html>
此时cmd增加数据,刷新也会同步增加