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()
#浏览器输入:http://127.0.0.1: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: http://127.0.0.1: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 name="keywords" content="30期皇家赌场,皇家赌场,皇家,"> #搜索引擎搜索的关键字
<meta name="description" 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>
特殊字符
内容 对应代码
空格(html中默认是不显示空格的,也就是说通过空格键加了空格也没有多个空格的效果,加多少个都是显示一个空格效果,需要这些特殊字符才能显示出空格效果)
> >
< <
& &
¥ ¥
版权标识(写公司网站的时候会用到) ©
注册(一个圆圈里面有个R) ®
标签分类
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- <style>-->
<!-- div{-->
<!-- background-color: red;-->
<!-- }-->
<!-- span{-->
<!-- color: green;-->
<!-- }-->
</style>
</head>
<body>
xxx
<span>xx1</span>
<span>xx2</span>
<div>xxdiv</div>
<span>xx3</span>
<!--
块级标签(行外标签),独占一行:p、h1--h6、hr、div
内联标签(行内标签),不独占一行:b、i、u、s、span
嵌套规则:通常块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。div是可以包含div的
p标签比较特殊,不能包含块级标签,p标签也不能包含p标签。可以试一下p标签套p标签,f12你会发现三个p标签
-->
</body>
</html>
#html--标签 网页股价
#css -- 样式效果
#js --动态效果
-
img标签
<img src="图片的路径" alt="图片未加载成功时的提示" title="鼠标悬浮时提示信息" width="宽" height="高(宽高两个属性只用一个会自动等比缩放)"> -
a标签
超链接标签 所谓的超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序。<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--埋点,两种方式都可以,a标签name属性,其他标签的id属性--> <!--<a name="xx">顶部位置</a>--> <div id="xx">顶部位置</div> <!--src=图片路径,当图片未加载完成,显示alt的内容,--> <img src="huluwa.png" alt="这是一个葫芦娃!"title="葫芦娃"width="100"height="100"> <a href="http://www.baidu.com" target="_blank">百度</a> <a href="#xx">回到顶部</a> <!--跳转锚点--> </body> </html>
列表
-
无序列表
<ul type="disc"> <li>第一项</li> <li>第二项</li> </ul> type属性: disc(实心圆点,默认值) circle(空心圆圈) square(实心方块) none(无样式) -
有序列表
<ol type="1" start="2"> <li>第一项</li> <li>第二项</li> </ol> type属性: start是从数字几开始 1 数字列表,默认值 A 大写字母 a 小写字母 Ⅰ大写罗马 ⅰ小写罗马 -
标题列表
<dl> <dt>标题1</dt> <dd>内容1</dd> <dt>标题2</dt> <dd>内容1</dd> <dd>内容2</dd> </dl>
表格标签
表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
表格的基本结构:
<table border=\'1\'>
<thead> #标题部分
<tr> #一行
<th>序号</th> #一个单元格
<th>姓名</th>
<th>爱好</th>
</tr>
</thead>
<tbody> #内容部分
<tr> #一行
<td>1</td> #一个单元格
<td>Egon</td>
<td>杠娘</td>
</tr>
<tr>
<td>2</td>
<td>Yuan</td>
<td>日天</td>
</tr>
</tbody>
</table>
属性:
border: 表格边框.
cellpadding: 内边距 (内边框和内容的距离)
cellspacing: 外边距.(内外边框的距离)
width: 像素 百分比.(最好通过css来设置长宽)
rowspan: 单元格竖跨多少行
colspan: 单元格横跨多少列(即合并单元格)
input标签
<input> 元素会根据不同的 type 属性,变化为多种形态。
type属性值 表现形式 对应代码
text 单行输入文本 <input type=text" />
password 密码输入框(不显示明文) <input type="password" />
date 日期输入框 <input type="date" />
checkbox 复选框 <input type="checkbox" checked="checked" name=\'x\' />
radio 单选框 <input type="radio" name=\'x\' />
submit 提交按钮 <input type="submit" value="提交" /> #发送浏览器上输入标签中的内容,配合form表单使用,页面会刷新
reset 重置按钮 <input type="reset" value="重置" /> #页面不会刷新,将所有输入的内容清空
button 普通按钮 <input type="button" value="普通按钮" />
hidden 隐藏输入框 <input type="hidden" />
file 文本选择框 <input type="file" /> (等学了form表单之后再学这个)
属性说明:
name:表单提交时的“键”,注意和id的区别
value:表单提交时对应项的值
type="button", "reset", "submit"时,为按钮上显示的文本年内容
type="text","password","hidden"时,为输入框的初始值
type="checkbox", "radio", "file",为输入相关联的值
checked:radio和checkbox默认被选中的项
readonly:text和password设置只读
disabled:所有input均适用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
用户名:<input type="text">
<input type="hidden">
密码:<input type="password">
<input type="date">
<br>
爱好:
<input type="checkbox" name="hobby"> 男人
<input type="checkbox" name="hobby"> 女人
<input type="checkbox" name="hobby"> 二椅子
<br>
单选性别:
<input type="radio" name="sex"> 男
<input type="radio" name="sex"> 女
<hr>
<input type="submit" value="确定">
<input type="reset" value="重置">
<input type="button" value="普通按钮">
<hr>
<input type="file">
</body>
</html>
下拉框 select标签
<form action="" method="post">
<select name="city" id="city">
<option value="1">北京</option>
<option selected="selected" value="2">上海</option> #默认选中,当属性和值相同时,可以简写一个selected就行了
<option value="3">广州</option>
<option value="4">深圳</option>
</select>
</form>
属性说明:
multiple:布尔属性,设置后为多选下拉框,否则默认单选
disabled:禁用
selected:默认选中该项
value:定义提交时的选项值
label标签
定义:<label> 标签为 input 元素定义标注(标记)。如果不用这个label给input标签一个标记,input会变黄,不影响使用,只是提示你,别忘了给用户一些提示,也就是这个label标签。
说明:
label 元素不会向用户呈现任何特殊效果。但是点击label标签里面的文本,那么和他关联的input标签就获得了光标,让你输入内容
<label> 标签的 for 属性值应当与相关元素的 id 属性值相同。
<form action="">
<label for="username">用户名</label> #for和input的id属性一样,就关联在一起了
<input type="text" id="username" name="username">
</form>
textarea多行文本
<textarea name="memo" id="memo" cols="30" rows="10">
默认内容
</textarea>
属性说明:
name:名称
rows:行数 #相当于文本框高度设置
cols:列数 #相当于文本框长度设置
disabled:禁用
maxlength:显示字符数,例如:maxlength=\'10\' 最多输入十个字符