欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python web学习笔记一----基础的动静态网页

程序员文章站 2022-07-15 12:06:29
...
#创建一个网页,读取并return回去用于发送
#静态网页
def f1(reqeust):
    f = open('demo1.html', 'rb')
    data = f.read()
    f.close()
    return data

python web学习笔记一----基础的动静态网页
第一个html文件内容

#动态网页
def f3(request):
    conn = pymysql.Connection(
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='root',
        db='python_text',
        charset='utf8'
    )
    #连接数据库,参数不同对应不同
    cours = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cours.execute("select name,id,youxiang from user")
    user_list = cours.fetchall()
    #此时user_list里为数据库里的user表,类型为字典
    cours.close()
    conn.close()
    conter_list = []
   for row in user_list:
        tp = "<tr><td>%s</td><td>%s</td><td>%s</td></tr>"%(row['name'],row['id'],row['youxiang'])
        conter_list.append(tp)
    conter = "".join(conter_list)
	#把数据库里user表信息循环赋值并写成html语句用于下面替换html里的某部分内容
    f = open('demo3.html', 'r',encoding='utf8')
    data = f.read()
    f.close()
    data_end = data.replace("@aaa@qq.com",conter)
    #这里的读取一定要r,如果是rb将无法进行替换(字节流无法进行str操作)恼火查了很久
    print(data_end)
    return bytes(data_end,'utf8')
   #返回数据,编码为utf8

python web学习笔记一----基础的动静态网页
第二个html内容

def run():
    sock = socket.socket()
    sock.bind(('127.0.0.1', 8080))
    sock.listen(5)
#创建socket对象,绑定服务与端口

    while True:
        conn, addr = sock.accept()
        data = conn.recv(8096)
        data = str(data, encoding='utf-8')
        heard, body = data.split('\r\n\r\n')
        tmpe_list = heard.split('\r\n')
        tmpe_two, url, protocal = tmpe_list[0].split(' ')
        conn.send(b'HTTP/1.1 200 OK \r\n\r\n')
 #获取访问主机的的数据,进行分割
        func_name1=None
        for item in url_list:
            if item[0] == url:
                func_name1 = item[1]
                break
        if func_name1:
            response = func_name1(data)
        else:
            response = b"404 NOT FOUND"
 #将url列表循环,如果有用户访问的url地址,则调用对应函数    
        conn.send(response)
        conn.close()
 #发送给用户信息并关闭连接

python web学习笔记一----基础的动静态网页
结果如图
python web学习笔记一----基础的动静态网页
python web学习笔记一----基础的动静态网页
网页和数据库的数据
相关坑点说明,第一个:读取html的方式是rb,所以返回时不需要转换为byte类型,如果返回的数据类型不是字节(byte)需要进行转换 例如b’404 NOT found’
第二个 如果读取方式为rb,下面对文件的任何操作都会出现问题,将html转为str再进行替换操作,不会异常,但是连接网页的时候会出现无法识别问题

相关标签: python web