4 将数据库的表数据利用模板语法展示到前端页面

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增加数据,刷新也会同步增加

posted @ 2021-11-19 23:43  甜甜de微笑  阅读(522)  评论(0编辑  收藏  举报