web项目大致流程
python后端
服务器程序:socket
应用程序:python逻辑代码
移动端:h5 ios
pc端:h4 h5
浏览器页面展示
html
css
js ---jquery框架
bootstrap框架
数据库
mysql
MongoDB
redis
oracle 等
原生socket实现简单的web项目 #server.py import socket server = socket.socket() ip_port = (\'127.0.0.1\',8001) server.bind(ip_port) server.listen() while True: conn,add = server.accept() client_msg = conn.recv(1024) print(\'来自客户端的数据>>>\',client_msg) conn.send(b\'HTTP/1.1 200 OK\r\n\r\n\') conn.send(b\'<h1>welcome!30 hjdc!</h1>\')#html-标签--超文本标记语言 --经过浏览器解析(html标记语言的解析器) --对应效果 conn.close() #浏览器输入::8001/ #页面返回:welcome!30 hjdc! #pycharm返回: 来自客户端的数据>>> b\'GET / HTTP/1.1\r\nHost: 127.0.0.1:8001\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nsec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"\r\nsec-ch-ua-mobile: ?0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nSec-Fetch-Site: none\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-User: ?1\r\nSec-Fetch-Dest: document\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n\' 来自客户端的数据>>> b\'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:8001\r\nConnection: keep-alive\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nsec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"\r\nsec-ch-ua-mobile: ?0\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\nAccept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8\r\nSec-Fetch-Site: same-origin\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Dest: image\r\nReferer: :8001/\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n\' import socket server = socket.socket() ip_port = (\'127.0.0.1\',8001) server.bind(ip_port) server.listen() while True: conn,add = server.accept() client_msg = conn.recv(1024) print(\'来自客户端的数据>>>\',client_msg) conn.send(b\'HTTP/1.1 200 OK\r\n\r\n\') #conn.send(b\'<h1>welcome!30 hjdc!</h1>\') #html-标签--超文本标记语言 --经过浏览器解析(html标记语言的解析器) --对应效果 with open(\'test.html\',\'rb\') as f: data = f.read() \'\'\' 调用mysql中的数据,给data添加上或者替换上mysql中的数据 \'\'\' conn.send(data) conn.close() #test.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <h1>欢迎来到30期皇家赌场</h1> 请猛烈的点击这里<a href="http://www.baidu.com">有惊喜</a> <body> </body> </html>应用层 -- http、https相关协议
http协议请求
请求 GET / HTTP/1.1 ... 你的消息
响应 HTTP/1.1 200 ok\r\n\r\n\r\hello
html文档结构 head标签 <!DOCTYPE html> <!--文档声明 H5 html--> <html lang="en"> #表示语言,zh-CN是中文的意思,就是说,你这个文档的内容以中文为主,如果是以英文为主,就写出en <head> <meta charset="UTF-8"> <!--charset="UTF-8"标签属性 格式:属性名称=\'属性\'规定标签的一些格式,效果等--> <title>Title</title> <!--页面名称--> </head> <body> <h1>xx</h1> <!--全封闭标签--> <img src="" alt=""> <!--自封闭标签--> </body> </html> <meta content="30期皇家赌场,皇家赌场,皇家,"> #搜索引擎搜索的关键字 <meta content="30期皇家渡航xx有好多什么..视频供你看。。游戏。。"> #搜索引擎搜索时的描述内容 <!--2秒后跳转到对应的网址,注意引号--> <meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com"> #如果把URL和后面的内容去掉,就是2秒钟刷新一次,这些内容了解一下就行 <!--指定文档的编码类型--> <meta http-equiv="content-Type" charset=UTF8"> <!--告诉IE以最高级模式渲染文档--> <meta http-equiv="x-ua-compatible" content="IE=edge"> #edge是微软的一个全新的浏览器,其实就是告诉IE浏览器,你按照最高标准来渲染我的页面,了解一下就可以啦 浏览器内核: 浏览器 -- 内核 IE -- trident chrome --- blink 火狐 --- gecko Safari --- webkit PS:「浏览器内核」也就是浏览器所采用的「渲染引擎」,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。渲染引擎是兼容性问题出现的根本原因。 body中的基本标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 加粗 <b>加粗</b> <i>斜体</i> <br> #换行 <u>下划线</u> <hr> #加一条横线 <s>删除</s> <p>段落标签</p> <h1>标题1</h1> <h2>标题2</h2> <h3>标题3</h3> <h4>标题4</h4> <h5>标题5</h5> <h6>标题6</h6> </body> </html>