047.Python前端html
一 HTTP协议
1.1 HTTP请求
URL: 协议/IP:端口/路径?GET参数
基于请求响应
请求协议格式
GET URL路径?a=1&b=2 HTTP # 请求首行
user-agent: XXX # 请求头
accept-encoding: gzip, deflate, br # 请求头 a=1&b=2 # 请求体
响应协议格式
HTTP/1.1 200 OK # 响应首行
content-length: 28297 # 响应头
date: Sun, 07 Jul 2019 03:29:14 GMT helloyuan # 响应体
1.2 创建一个最简单的web应用程序
import socket sock=socket.socket()
sock.bind(("192.168.132.140",8800))
sock.listen(5) while 1:
conn,addr=sock.accept()
data=conn.recv(1024)
print("data:",data)
conn.send(b"HTTP/1.1 200 OK\r\n accept-encoding: gzip \r\n\r\n Hello,This is my first html socket html")
执行
使用浏览器访问
serevr端的内容
这里得到的是客户端发过来的数据,可对比请求协议格式
1.3 使用h1的标签
import socket sock=socket.socket()
sock.bind(("192.168.132.140",8800))
sock.listen(5) while 1:
conn,addr=sock.accept()
data=conn.recv(1024)
print("data:",data)
conn.send(b"HTTP/1.1 200 OK\r\n\r\n<h1>Hello,This is my first html socket html</h1>")
执行访问
可以把响应体写在一个文件里,这个文件就是一个html的文件如下
1.4 使用HTML文件
服务
import socket sock=socket.socket()
sock.bind(("192.168.132.140",8800))
sock.listen(5) while True:
conn,addr=sock.accept()
data=conn.recv(1024)
print("data:",data)
with open("webtest.html","rb") as f:
data = f.read()
conn.send(b"HTTP/1.1 200 OK\r\n\r\n"+data)
html文件
[root@node10 web]# cat webtest.html
<h1>Hello,This is my first html socket html</h1>
<img src='https://images.cnblogs.com/cnblogs_com/zyxnhr/1418148/o_nhrzyx.png'>
<a href='https://www.cnblogs.com/zyxnhr/'>my blog</a>
执行访问
二 HTML文件
2.1 HTML介绍
- 超文本标记语言(Hypertext Markup Language,HTML)通过标签语言来标记要显示的网页中的各个部分。一套规则,浏览器认识的规则
- 浏览器按顺序渲染网页文件,然后根据标记符解释和显示内容。但需要注意的是,对于不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性)
- 静态网页文件扩展名:.html 或 .htm
- HTML 不是一种编程语言,而是一种标记语言 (markup language)
- HTML 使用标记标签来描述网页
2.2 HTML结构
- <!DOCTYPE html> 告诉浏览器使用什么样的html或者xhtml来解析html文档
- <html></html>是文档的开始标记和结束标记。此元素告诉浏览器其自身是一个 HTML 文档,在它们之间是文档的头部<head>和主体<body>。
- <head></head>元素出现在文档的开头部分。<head>与</head>之间的内容不会在浏览器的文档窗口显示,但是其间的元素有特殊重要的意义。
- <title></title>定义网页标题,在浏览器标题栏显示。
- <body></body>之间的文本是可见的网页主体内容
2.3 HTML标签格式
--HTML标签是由尖括号包围的关键词,比如<html>
--HTML标签通常是成对出现的(双边标记),比如<div>和</div>
--标签不区分大小写.<html>和<HTML>.推荐使用小写
--标签分为两部分:开始标签和结束标签.两个标签之间的部分我们叫做标签体
有些标签功能比较简单使用一个标签即可这种标签叫做自闭和标签
例如:<br/> <hr/> <input/><img/>
--标签可以有若干个属性,也可以不带属性。如<head>元素不带任何属性
--标签可以嵌套但是不能交叉嵌套.<a><b></a></b>
标签的语法:
<标签名 属性1=“属性值1” 属性2=“属性值2”……>内容部分</标签名>
<标签名 属性1=“属性值1” 属性2=“属性值2”…… />
编写html文件,可以安装一个nginx,可以直接访问html文件
三 基本标签
<hn>: n的取值范围是1~6; 从大到小. 用来表示标题.
<p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白.就是一个快标签
<b> <strong>: 加粗标签.
<strike>: 为文字加上一条中线.
<em>: 文字变成斜体.
<sup>和<sub>: 上角标 和 下角表.
<br>:换行.
<hr>:水平线
特殊字符:
< >;";©®
3.1 div和span
<div></div> : <div>只是一个块级元素,并无实际的意义。主要通过CSS样式为其赋予不同的表现.
<span></span>: <span>表示了内联行(行内元素),并无实际的意义,主要通过CSS样式为其赋予不同的表现.
块级元素与行内元素的区别
所谓块元素,是以另起一行开始渲染的元素,行内元素则不需另起一行。如果单独在网页中插入这两个元素,不会对页面产生任何的影响。这两个元素是专门为定义CSS样式而生的。
3.2 图形标签: <img>
src: 要显示图片的路径.
alt: 图片没有加载成功时的提示.
title: 鼠标悬浮时的提示信息.
width: 图片的宽
height:图片的高 (宽高两个属性只用一个会自动等比缩放.)
示例:
<img src="https://images.cnblogs.com/cnblogs_com/zyxnhr/1418148/o_nhrzyx.png" alt = "blog" title = "my blog" width = "200" heigth = "300"><br>
3.3 超链接标签(锚标签): <a> </a>
所谓的超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页,也可以是相同网页上 的不同位置,还可以是一个图片,一个电子邮件地址,一个文件,甚至是一个应用程序
<a href="" target="_blank" >click</a>
href属性指定目标网页地址。该地址可以有几种类型: 绝对 URL - 指向另一个站点(比如 href="http://www.jd.com)
相对 URL - 指当前站点中确切的路径(href="index.htm")
锚 URL - 指向页面中的锚(href="#top")
a标签的锚功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#i1{
height: 800px;
background-color: green;
}
#i2{
height: 800px;
background-color: gold;
}
#i3{
height: 800px;
background-color: blueviolet;
}
</style>
</head>
<body> <a href="#i1">第一章</a>
<a href="#i2">第二章</a>
<a href="#i3">第三章</a>
<hr>
<div id="i1">111</div>
<div id="i2">222</div>
<div id="i3">333</div>
</body>
</html>
3.4 列表标签
<ul>: 无序列表 [type属性:disc(实心圆点)(默认)、circle(空心圆圈)、square(实心方块)]
<ol>: 有序列表
<li>:列表中的每一项.
<dl> 定义列表
<dt> 列表标题
<dd> 列表项
示例
<ul>
<li>123</li>
<li>234</li>
<li>345</li>
</ul> <ol>
<li>111</li>
<li>222</li>
<li>333</li>
</ol> <dl>
<dt>陕西省</dt>
<dd>西安市</dd>
<dd>长安县</dd>
</dl>
</body>
3.5 表格标签: <table>
表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的
表格等内容。
表格最重要的目的是显示表格类数据。表格类数据是指最适合组织为表格格式(即按行和列组织)的数据。
表格的基本结构:
<table>
<tr>
<td>标题</td>
<td>标题</td>
</tr>
<tr>
<td>内容</td>
<td>内容</td>
</tr>
</table>
表格属性
<tr>: table row
<th>: table head cell
<td>: table data cell
属性:
border: 表格边框.
cellpadding: 内边距
cellspacing: 外边距.
width: 像素 百分比.(最好通过css来设置长宽)
rowspan: 单元格竖跨多少行
colspan: 单元格横跨多少列(即合并单元格)
示例
<head>
<meta charset = "utf-8">
<title>Python web </title>
<style>
table{
border-color: red;
}
</style>
</head> <table border="1" cellpadding="5" cellspacing="5" align=center>
<thead>
<tr>
<th>项目</th>
<th colspan="5">课程</th>
<th colspan="2">休息</th>
</tr>
</thead>
<tr>
<th><center>星期</th>
<th>星期一</th>
<th>星期二</th>
<th>星期三</th>
<th>星期四</th>
<th>星期五</th>
<th>星期六</th>
<th>星期日</th>
</tr>
<tr>
<td rowspan="4"><center>上午</td>
<td>语文</td>
<td>数学</td>
<td>化学</td>
<td>英语</td>
<td>生物</td>
<td>计算机</td>
<td rowspan="4"><center>休息</td>
</tr>
<tr>
<td>英语</td>
<td>语文</td>
<td>化学</td>
<td>数学</td>
<td>英语</td>
<td>计算机</td>
</tr>
<tr>
<td>数学</td>
<td>英语</td>
<td>语文</td>
<td>物理</td>
<td>英语</td>
<td>计算机</td>
</tr>
<tr>
<td>语文</td>
<td>英语</td>
<td>生物</td>
<td>数学</td>
<td>英语</td>
<td>计算机</td>
</tr>
<tr>
<td rowspan="2">下午</td>
<td>语文</td>
<td>数学</td>
<td>化学</td>
<td>英语</td>
<td>生物</td>
<td>计算机</td>
<td rowspan="2"><center>休息</td>
</tr>
<tr>
<td>语文</td>
<td>英语</td>
<td>生物</td>
<td>数学</td>
<td>英语</td>
<td>计算机</td>
</tr>
</tbody>
</table>
显示
3.6 表单标签: <form>
功能:
- 表单用于向服务器传输数据,从而实现用户与Web服务器的交互
- 表单能够包含input系列标签,比如文本字段、复选框、单选框、提交按钮等等。
- 表单还可以包含textarea、select、fieldset和 label标签。
表单属性
- action: 表单提交到哪.一般指向服务器端一个程序,程序接收到表单提交过来的数据(即表单元素值)作相应处理,比如https://www.sogou.com/web
- method: 表单的提交方式 post/get默认取值就是get
表单元素
- HTML表单是HTML元素中较为复杂的部分,表单往往和脚本、动态页面、数据处理等功能相结合,因此它是制作动态网站很重要的内容。
- 表单一般用来收集用户的输入信息
表单工作原理:
- 访问者在浏览有表单的网页时,可填写必需的信息,然后按某个按钮提交。这些信息通过Internet传送到服务器上。
- 服务器上专门的程序对这些数据进行处理,如果有错误会返回错误信息,并要求纠正错误。当数据完整无误后,服务器反馈一个输入完成的信息
<input>系列标签
name: 表单提交项的键.
注意和id属性的区别:name属性是和服务器通信时使用的名称;
而id属性是浏览器端使用的名称,该属性主要是为了方便客户端编程,而在css和javascript中使用的
value: 表单提交项的值.对于不同的输入类型,value 属性的用法也不同:
type="button", "reset", "submit" - 定义按钮上的显示的文本
type="text", "password", "hidden" - 定义输入字段的初始值
type="checkbox", "radio", "image" - 定义与输入相关联的值
checked: radio 和 checkbox 默认被选中
readonly: 只读. text 和 password
disabled: 对所用input都好使.
类型
type: text 文本输入框
password 密码输入框
radio 单选框
checkbox 多选框
submit 提交按钮
button 按钮(需要配合js使用.) button和submit的区别?
file 提交文件:form表单需要加上属性enctype="multipart/form-data"
select标签
<select> 下拉选标签属性
name:表单提交项的键.
size:选项个数
multiple:multiple
<optgroup>为每一项加上分组
<option> 下拉选中的每一项 属性:
value:表单提交项的值.
selected: selected下拉选默认被选中
<textarea> 多行文本框
<form id="form1" name="form1" method="post" action="">
<textarea cols=“宽度” rows=“高度” name=“名称”>
默认内容
</textarea>
</form>
<label>标签
定义:<label> 标签为 input 元素定义标注(标记)
- label 元素不会向用户呈现任何特殊效果。
- <label> 标签的 for 属性值应当与相关元素的 id 属性值相同。
<form method="post" action=""> <label for=“username”>用户名</label>
<input type=“text” name=“username” id=“username” size=“20” />
</form>
<fieldset>标签
<fieldset>
<legend>登录</legend>
<input type="text">
</fieldset>
示例
运行socker的server端
[root@node10 web]# python test.py
html的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>注册页面 </h4>
<form>
<p>姓名 <input type="text"></p>
<p>密码 <input type="password"></p>
<p>爱好 <input type="checkbox">篮球 <input type="checkbox">足球 <input type="checkbox">羽毛球 <input type="checkbox">排球</p>
<p>性别 <input type="radio">男 <input type="radio">女 <input type="radio">其他 </p>
<input type="submit">
</form>
</body>
</html>
访问
提交后,查看数据
但是发现没有接收到数据,是因为表单缺少name属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>注册页面 </h4>
<form action="http://192.168.132.140:8800" method="get">
<p>姓名 <input type="text" name="user"></p>
<p>密码 <input type="password" name="pwd"></p>
<p>爱好 <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" name="hobby" value="football">足球 <input type="checkbox" name="hobby" value="badminton">羽毛球 <input type="checkbox" name="hobby" value="volleyball">排球</p>
<p>性别 <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" value="famale">女 <input type="radio" name="gender" value="other">其他 </p>
<input type="submit">
</form>
</body>
</html>
提交
('data:', 'GET /?user=ning&pwd=herui&hobby=basketball&hobby=football&gender=male HTTP/1.1\r\nHost: 192.168.132.140:8800\r\nConnection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\nReferer: http://192.168.132.140/\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\n')
('data:', 'GET /favicon.ico HTTP/1.1\r\nHost: 192.168.132.140:8800\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://192.168.132.140:8800/?user=ning&pwd=herui&hobby=basketball&hobby=football&gender=male\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\n')
显示
访问的已经添加上了请求的内容http://192.168.132.140:8800/?user=ning&pwd=herui&hobby=basketball&hobby=football&gender=male
使用post,同时添加用户和密码的默认值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>注册页面 </h4>
<form action="http://192.168.132.140:8800" method="post">
<p>姓名 <input type="text" name="user" value="ning"></p>
<p>密码 <input type="password" name="pwd" value="123123"></p>
<p>爱好 <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" name="hobby" value="football">足球 <input type="checkbox" name="hobby" value="badminton">羽毛球 <input type="checkbox" name="hobby" value="volleyball">排球</p>
<p>性别 <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" value="famale">女 <input type="radio" name="gender" value="other">其他 </p>
<input type="submit">
</form>
</body>
</html>
执行
数据
('data:', 'POST / HTTP/1.1\r\nHost: 192.168.132.140:8800\r\nConnection: keep-alive\r\nContent-Length: 49\r\nCache-Control: max-age=0\r\nOrigin:
http://192.168.132.140\r\nUpgrade-Insecure-Requests: 1\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,
application/signed-exchange;v=b3;q=0.9\r\nReferer: http://192.168.132.140/\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\nuser=ning&pwd=123123&hobby=basketball&gender=male')
('data:', 'GET /favicon.ico HTTP/1.1\r\nHost: 192.168.132.140:8800\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/80.0.3987.132 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nReferer: http://192.168.132.140:8800/\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\n')
而此时,访问的URL依然是http://192.168.132.140:8800/
其他的标签
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>注册页面 </h4>
<form action="http://192.168.132.140:8800" method="post">
<p>姓名 <input type="text" name="user" value="ning"></p>
<p>密码 <input type="password" name="pwd" value="123123"></p>
<p>爱好 <input type="checkbox" name="hobby" value="basketball">篮球 <input type="checkbox" name="hobby" value="football">足球 <input type="checkbox" name="hobby" value="badminton">羽毛球 <input type="checkbox" name="hobby" value="volleyball">排球</p>
<p>性别 <input type="radio" name="gender" value="male">男 <input type="radio" name="gender" value="famale">女 <input type="radio" name="gender" value="other">其他 </p>
<p><input type="hidden" name="token" value="12312sad221312sa"></p>
<p><input type="reset"></p>
<p><input type="file"></p>
<p>
籍贯
<select name="pro" id="" size="" >
<option value="hebei">河北省</option>
<option value="henan" selected>河南省</option>
<option value="shandong">山东省</option>
</select>
</p> <p>
<textarea name="jianjie" cols="30" rows="10" placeholder="个人简介"></textarea>
</p>
<input type="submit">
</form>
</body>
</html>
显示
参考:https://www.cnblogs.com/yuanchenqi/articles/6835654.html
047.Python前端html的更多相关文章
- Python 前端 Html基础
概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页的标准语言.相当于定义统一 的规则.大家都来遵守它,这样就可以让浏览器根据标记语 ...
- Java,Python,前端,Linux,公众号等5T编程资源整理免费下载
场景 我的CSDN: https://blog.csdn.net/BADAO_LIUMANG_QIZHI 实现 马士兵Java学习视频 方立勋JavaWeb 尚硅谷Python核心基础 数据分析 机器 ...
- Java+Python+前端 学习资料大全 百度云盘
Java架构师3大阶段 链接:https://pan.baidu.com/s/1DlXh33y5t4cZUmZH0cLvCw 提取码:5s76 2019前端架构阶段 链接:https://pan.ba ...
- 049.Python前端javascript
一 JavaScript概述 1.1 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名Script ...
- Python 前端 js基础
Javascript 概述 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的 ...
- 058.Python前端Django与Ajax
一 Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务 ...
- 055.Python前端Django模型ORM
由于前面在centos实验的过程中,pymql一直有属性错误,很难排查出问题,重新做了一个ubuntu的桌面系统同时使用pycharm开发工具作为学习开发工具,具体原因是因为在项目命名出现问题,和自己 ...
- 052.Python前端Django框架路由层和视图层
一.路由层(URLconf) 1.1 路由层简单配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Dj ...
- 050.Python前端jQuery
一 jQuery是什么? jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototype之后又一个优秀的Ja ...
随机推荐
- Webpack的基本配置和打包与介绍
1. 前言 1.1 Webpack是什么 可能有很多的小伙伴对于这个Webpack既熟悉又陌生,有一些刚开始接触vue的小伙伴在对项目进行打包的时候经常会使用到npm run build来进行打包,但 ...
- Dynamics CRM绑定表单查看当前表单的数据参数传递
我们做报表的时候,报表运行的位置可以在列表.也可以在报表区同时也可以在表单界面 其他两个都还好,不需要进行过滤,但是在表单界面运行报表需要将表单的GUID传给报表获取数据,否则就得手动去输入ID 具体 ...
- UnitFourSummary
目录 第四单元架构设计 taskOne taskTwo taskThree 四个单元架构设计与OO方法理解的演进 四个单元架构设计 UnitOne UnitTwo UnitThree UnitFour ...
- 一次死锁导致CPU异常飘高的整个故障排查过程
目录 一.问题详情 top 命令截图 联系腾讯云排查 检查系统日志发现异常 二. 问题解析 三.问题原因 最终结论 四.扩展 进程的几种状态 马后炮 如何快速清理僵尸进程(Z) 内核参数相关 如何查看 ...
- k8s 安装 rabbitMQ 单机版
rabbitMQ docker镜像使用rabbitmq:3.8-management service.yaml文件 apiVersion: v1 kind: Service metadata: nam ...
- Alpine镜像
Alpine Linux 是一个面向安全,轻量级的基于musl libc与busybox项目的Linux发行版. Alpine 提供了自己的包管理工具 apk,可以通过 https://pkgs.al ...
- hdu3768 spfa+全排列
题意: 给你一个无向图,和一些必须经过的点,问你从起点出发,到达所有必须经过的点再回来的最小总路径. 思路: 因为必须经过的点的数量很小,小于等于10,全排列是 10! = 3 ...
- Windows核心编程 第2 5章 未处理异常和C ++异常(上)
未处理异常和C + +异常(上) 前一章讨论了当一个异常过滤器返回 E X C E P T I O N _ C O N T I N U E _ S E A R C H时会发生什么事情.返回EXCEPT ...
- c# 通过 p/invoke 使用 c的加密程序 参数传递问题
最近项目中使用需要上位机和下位机通过rs232通信,涉及到通讯加密问题, 硬件那边主要是pcb layout的,于是我就把加密的活拦了过来,锻炼锻炼 首先说明问题: 在c中,加密解密都测试通过,然后在 ...
- XCTF-supersqli
supersqli 进来有个输入框,看内容应该是var_dump了sql查询结果 单引号有报错,万能语句能用,注释符#没被ban 打了个union select,给提示ban了一堆关键字,而且忽略大小 ...