HTML介绍
Web服务本质
import socket
sk = socket.socket()
sk.bind(("127.0.0.1", 8080))
sk.listen(5)
while True:
conn, addr = sk.accept()
data = conn.recv(8096)
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
conn.send(b"<h1>Hello world!</h1>")
conn.close()
浏览器发请求 --> HTTP协议 --> 服务端接收请求 --> 服务端返回响应 --> 服务端把HTML文件内容发给浏览器 --> 浏览器渲染页面
## HTML是什么?
```html
HTML是构造网页的骨架===> 几乎所有的网站都是由HTML构建而成
网页文件的扩展名:.html或.htm
该类型文件主要的打开方式为浏览器形式
HTML: 超文本标记语言
# 不是一门编程语言,没有任何的逻辑,只有固定的标记功能
HTML简介
<h1>哈哈哈</h1>
<a href="url">点击跳转</a>
<img src='url'/>
"""
文本到了浏览器删改你会自动被渲染成不同的样式
h1渲染成一级标题
a渲染成链接标签
img渲染成图片
引出: HTML标签语法
"""
HTML标签的分类
1. 双标签(有头有尾)
<a></a>
2. 自闭合标签(单标签)
<img/>
HTML文档结构
<html>
<head>编写给浏览器查看的内容</head>
<body>编写展示给用户查看的内容</body>
</html>
'''在使用编程工具创建的时候会自动编写文档结构'''
HTML语法注释
<!--当行注释-->
<!--
多行注释
多行注释
-->
'''在编写时,编程工具也有注释快捷键ctrl+?'''
注释是代码之母
如何创建及展示
1. 以pycharm为例
右键new点击HTML FILE创建即可
2. 如何打开展示
右上方会提供多种浏览器(注意需要提前下载)
# 编写HTML标签的时候,不需要自己写大括号小括号 ,在写标签名称+tab键即可自动补全(所有支持编写html文件的工具内部自带的插件语法功能)
head内常见标签
html 定义文档开始和结束的标记 文档主体主体
title 定义网页标题
style 内部支持css代码
script 内部支持编写js代码 还可以通过src属性导入外部js文件
link 通过hret属性引入外部的css文件
meta 定义网页原信息
keywords关键字搜索
description网页描述信息
与之对应的属性值content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。
body内基本标签
h1~h6 标题标签
p 段落标签
b 加粗
i 斜体
u 下划线
s 删除线
br 换行
hr 水平分割线
""" 有时候相同的样式 可能有多种标签可以实现"""
标签分类
分类1: 单双标签
分类2: 块儿级标签 h1~h6 p
独占一行(可以通过css实现不占一行)
行内标签 u i s b
自身文本多大就占多大
特殊符号
空格
> 大于号
< 小于号
& &符号
¥ 羊角符
© 版权符
® 注册
常见标签
# 网页在制作之前需要提前布局好
布局标签
div 块级标签
span 行内标签
"""
标签是可以嵌套的 但是需要遵循以下规律
块级标签 可以无限制的嵌套块级标签和行内标签
特例:p 标签虽然是块级标签但是也不能嵌套块级标签
行内标签不能嵌套块儿级标签 可以嵌套行内标签
"""
img标签
<img src="图片的路径" alt="图片未加载成功时的提示" title="鼠标悬浮时提示信息" width="宽" height="高(宽高两个属性只用一个会自动等比缩放)">
1. a标签:链接标签
用法1: 通过href属性指定网址(URL)点击跳转
跳转过程中有两种方式
1. 当前页面跳转 target="_self" 默认
2. 新建页面跳转 target="_blank"
<a href="http://www.oldboyedu.com" target="_blank" >点我</a>
用法2:锚点功能
通过href属性指定标签的id值点击即可跳转到对应位置
"""
绝对URL - 指向另一个站点(比如 href="http://www.jd.com)
相对URL - 指当前站点中确切的路径(href="index.htm")
锚URL - 指向页面中的锚(href="#top")
"""
""" URL : 统一资源定位符,也被称为网页地址"""
URL举例
http://www.sohu.com/stu/intro.html
http://222.172.123.33/stu/intro.html
URL地址由4部分组成
第1部分:为协议:http://、ftp://等
第2部分:为站点地址:可以是域名或IP地址
第3部分:为页面在站点中的目录:stu
第4部分:为页面名称,例如 index.html
各部分之间用“/”符号隔开。
2. img标签:图片标签 <img src="1.jpg"/>
src属性指定图片地址
可以是本地的地址也可以是网络上的地址
alt属性编写文本
用于在图片无法加载出来的情况下的提示信息
title属性编写文本
用于鼠标悬浮在图片上之后提示的文本信息
height、width属性编写像素
用于调整图片的尺寸
注意: 在调整或修改一个另外一个自动等比例缩放
标签的两个重要属性
1. id属性 个体查找
类似于标签的身份证号 在同一个html页面上id不能重复
2. class属性 群体查找
类似于python面向对象中的类的继承
可以将多个标签划为一类
<h1 class='c1'></h1>
<p class='c1'></p>
并且一个标签可以有很多类
<h1 class='c1 c2 c3'></h1>
<p class='c1 c8 c9'></p>
列表标签
1. 无序列表
# 前面没有用于表示数字顺序的提示
<ul>
<li>111</li>
<li>222</li>
<li>333</li>
</ul>
"""
type属性:
disc(实心圆点,默认值)
circle(空心圆圈)
square(实心方块)
none(无样式)
"""
"""网页上有规则排列的多个横向或者竖向内容 几乎都是无序列表"""
2.有序列表
<ol>
<li>111</li>
<li>222</li>
<li>333</li>
</ol>
"""
ype属性:
1 数字列表,默认值
A 大写字母
a 小写字母
Ⅰ大写罗马
ⅰ小写罗马
"""
3. 标题列表
<dl>
<dt>标题1</dt>
<dd>内容1</dd>
<dt>标题2</dt>
<dd>内容1</dd>
<dd>内容2</dd>
</dl>
表格标签
# 表格标签的格式
<table>
<thead></thead> 表头
<tbody></tbody> 表单
</table>
# tr标签
tr就表示一行
# th标签
在表头的字段名称
# td标签
普通的单元格数据
例如:
<table>
<thead>
<tr>
<th>姓名</th>
<th>密码</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr>
<td>qq</td>
<td>123</td>
<td>18</td>
</tr>
</tbody>
</table>
border : 表格边框
cellpandding : 内边框
cellspacing : 外边框
width :像素 百分比
rowspan : 单元格书竖跨多少行
colspan : 单元格横跨多少行(即合并单元格)
form
功能:
表单用于向服务器传输数据,从而实现用户与Web服务器的交互
表单能够包含input系列标签,比如文本字段、复选框、单选框、提交按钮等等。
表单还可以包含textarea、select、fieldset和 label标签。
表单属性
accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集)。
action 规定向何处提交表单的地址(URL)(提交页面)。
autocomplete 规定浏览器应该自动完成表单(默认:开启)。
enctype 规定被提交数据的编码(默认:url-encoded)。
method 规定在提交表单时所用的 HTTP 方法(默认:GET)。
name 规定识别表单的名称(对于 DOM 使用:document.forms.name)。
novalidate 规定浏览器不验证表单。
target 规定 action 属性中地址的目标(默认:_self)。
表单元素
基本概念:
HTML表单是HTML元素中较为复杂的部分,表单往往和脚本、动态页面、数据处理等功能相结合,因此它是制作动态网站很重要的内容。
表单一般用来收集用户的输入信息
表单工作原理:
访问者在浏览有表单的网页时,可填写必需的信息,然后按某个按钮提交。这些信息通过Internet传送到服务器上。
服务器上专门的程序对这些数据进行处理,如果有错误会返回错误信息,并要求纠正错误。当数据完整无误后,服务器反馈一个输入完成的信息。
Django接收上传文件代码
from django.conf.urls import url
from django.shortcuts import HttpResponse
def upload(request):
print("request.GET:", request.GET)
print("request.POST:", request.POST)
if request.FILES:
filename = request.FILES["file"].name
with open(filename, 'wb') as f:
for chunk in request.FILES['file'].chunks():
f.write(chunk)
return HttpResponse('上传成功')
return HttpResponse("收到了!")
urlpatterns = [
url(r'^upload/', upload),
]
input
元素会根据不同的 type 属性,变化为多种形态。
type属性值 表现形式 对应代码
text 单行输入文本 <input type="text" />
password 密码输入框 <input type="password" />
date 日期输入框 <input type="date" />
checkbox 复选框 <input type="checkbox" checked="checked" />
radio 单选框 <input type="radio" />
submit 提交按钮 <input type="submit" value="提交" />
reset 重置按钮 <input type="reset" value="重置" />
button 普通按钮 <input type="button" value="普通按钮" />
hidden 隐藏输入框 <input type="hidden" />
file 文本选择框 <input type="file" />
属性说明:
-
name:表单提交时的“键”,注意和id的区别
-
value:表单提交时对应项的值
type="button", "reset", "submit"时,为按钮上显示的文本年内容 type="text","password","hidden"时,为输入框的初始值 type="checkbox", "radio", "file",为输入相关联的值
-
checked:radio和checkbox默认被选中的项
-
readonly:text和password设置只读
-
disabled:所有input均适用
select标签
<form action="" method="post">
<select name="city" id="city">
<option value="1">北京</option>
<option selected="selected" value="2">上海</option>
<option value="3">广州</option>
<option value="4">深圳</option>
</select>
</form>
属性说明:
- multiple:布尔属性,设置后为多选,否则默认单选
- disabled:禁用
- selected:默认选中该项
- value:定义提交时的选项值
label标签
定义:
- label 元素不会向用户呈现任何特殊效果。
<form action="">
<label for="username">用户名</label>
<input type="text" id="username" name="username">
</form>
textarea多行文本
<textarea name="memo" id="memo" cols="30" rows="10">
默认内容
</textarea>
属性说明:
- name:名称
- rows:行数
- cols:列数
- disabled:禁用