07 返回多个页面web框架
07 返回多个页面web框架
服务器server端python程序(不同页面版本):
import socket
server=socket.socket()
server.bind(("127.0.0.1",8888))
server.listen()
def func_indexHtml(conn):
with open("index.html","rb")as f:
conn.send(f.read())
def func_js(conn):
with open("index.js", "rb")as f:
conn.send(f.read())
def func_css(conn):
with open("index.css", "rb")as f:
conn.send(f.read())
def func_img(conn):
with open("index.png", "rb")as f:
conn.send(f.read())
def func_ico(conn):
with open("favicon.ico","rb")as f:
conn.send(f.read())
def func_html(conn):
with open("another.html","rb")as f:
conn.send(f.read())
def respones_back(conn,path,func_mappers):
conn.send(b"HTTP/1.1 200 ok \r\n\r\n")
for mapper in func_mappers:
if path==mapper[0]:
mapper[1](conn)
break
else:
conn.send(b"404 not found!")
conn.close()
func_mappers=[
("/",func_indexHtml),
("/index.js",func_js),
("/index.css",func_css),
("/index.png",func_img),
("/favicon.ico",func_ico),
("/another.html",func_html)]
if __name__ == '__main__':
while 1:
conn,client_addr=server.accept()
http_request=conn.recv(1024).decode("utf-8")
path=http_request.split("\r\n")[0].split(" ")[1]
print("path>>>",path)
respones_back(conn,path,func_mappers)
服务器server端python程序(不同页面版本)
index.html/another.html:

index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="">
<meta name="keywords" content="">
<link rel="stylesheet" href="index.css">
<link rel="icon" href="favicon.ico">
<title>返回不同页面</title>
</head>
<body>
<div id="d1">
<h1>返回不同页面页面:本html页面引用了外部本地css样式和js代码(本地图片)</h1>
</div>
<span><a href="another.html">点击跳转下一个页面</a></span>
<img src="index.png" alt="本地图片" title="本地图片">
</body>
<script src="index.js"></script>
</html>
index.html
another.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="">
<meta name="keywords" content="">
<link rel="stylesheet" href="">
<title>跳转的页面</title>
</head>
<body>
<h2>跳转成功!</h2>
</body>
</html>
another.html
07 返回多个页面web框架的更多相关文章
- 08 返回动态页面web框架
08 返回动态页面web框架 动态页面: 网页的内容是动态变化的,不是一直不变的(静态页面:每次显示的内容都是一样) 服务器server端python程序(动态页面版本): import socket ...
- web框架的本质
一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...
- python django基础一web框架的本质
web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- django基础一之web框架的本质
一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...
- day 52 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...
- 01.Django基础一之web框架的本质
一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...
- day 65 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...
- Django基础一Web框架的本质
我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...
随机推荐
- Spring Security Oauth2 使用 token 访问资源服务器出现异常:Invalid token does not contain resource id (oauth2)
异常如图 查看资源服务器的日志 p.a.OAuth2AuthenticationProcessingFilter : Authentication request failed: error=&quo ...
- 如何在Spring boot中修改默认端口
文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ...
- scala教程之:可见性规则
文章目录 public Protected private scoped private 和 scoped protected 和java很类似,scala也有自己的可见性规则,不同的是scala只有 ...
- xml文件错误
2019独角兽企业重金招聘Python工程师标准>>> xml文件错误The processing instruction target matching "[xX][mM ...
- Forrester:开源APM发展势头强劲
在企业的运营团队看来,系统的稳定性和可靠运行时间是至关重要的.因此,企业更乐意向能够负责的技术提供商购买开发完整的.有文档记录的,并且有售后支持的工具或软件. 一般来说,运营团队没有额外精力来应付新奇 ...
- 在Windows中快速配置vim
vim原本是在Linux中的编辑器,如果使用熟练写代码速度可以远高于其它编辑器 当然很多OI比赛也会要求在Linux中进行 然而: 想学Linux,首先要有一个Linux,但有了Linux,这个直播间 ...
- 一个简单的wed服务器SHTTPD(6)———— SHTTPD错误处理的实现
//start from the very beginning,and to create greatness //@author: Chuangwei Lin //@E-mail:979951191 ...
- 简单模拟实现Rxjs Observable
1.先定义类型 export type Observer = { next: (any) => void, complete?: (any) => void, } export inter ...
- turtle库应用实例2-六芒星的绘制
六芒星的绘制 ...
- 软件——eclipse debug小技巧
1.开启调试: 在代码编辑处右键单击,在弹出菜单中点击Debug As开始调试 2.几个快捷键: F5:跟入Step into, 一般会跟踪进入到调用函数的函数体,Step Over则不会跟踪进入,直 ...