前端——表格与表单
表格table
-
表格是一个二维数据空间,一个表格由若干行组成,一个行又有若干单元格组成,单元格里可以包含文字、列表、图案、表单、数字符号、预置文本和其它的表格等内容。
-
最主要的目的是显示表格类数据
表格类数据
- 最适合以行列来排布的数据
表格的基本结构
<table>
<thead> <!--表头(字段信息)-->
<tr>
<!--th:加粗文本-->
<th>序号</th>
<th>姓名</th>
<th>爱好</th>
</tr>
</thead>
<tbody> <!--表单(数据信息)-->
<tr> <!--行-->
<!--td:正常文本-->
<td>1</td> <!--列-->
<td>Yumi</td>
<td>追番</td>
</tr>
<tr>
<td>2</td>
<td>jason</td>
<td>美女</td>
</tr>
</tbody>
</table>
<!--
属性:
border: 表格边框.
cellpadding: 内边距
cellspacing: 外边距.
width: 像素 百分比.(最好通过css来设置长宽)
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)。 |
表单元素
input元素
type属性值 | 表现形式 | 对应代码 |
---|---|---|
text | 单行输入文本 | <input type=text" /> |
password | 密码输入框 | |
date | 日期输入框 | |
checkbox | 复选框 | |
radio | 单选框 | |
submit | 提交按钮 | |
reset | 重置按钮 | |
button | 普通按钮 | |
hidden | 隐藏输入框 | |
file | 文本选择框 |
<!--
属性说明:
name:表单提交时的“键”,注意和id的区别
value:表单提交时对应项的值
type="button", "reset", "submit"时,为按钮上显示的文本年内容
type="text","password","hidden"时,为输入框的初始值
type="checkbox", "radio", "file",为输入相关联的值
checked:radio和checkbox默认被选中的项
readonly:text和password设置只读(可以向后端传数据)
disabled:所有input均适用(禁用,设置后对应的input不可以向后端传数据)
-->
select标签
<!--下拉框-->
<form action="" method="post">
<select name="city" id="city">
<option value="1">北京</option>
<option selected value="2">上海</option>
<option value="3">广州</option>
<option value="4">深圳</option>
</select>
</form>
<!--
属性说明:
multiple:布尔属性,设置后为多选,否则默认单选
disabled:禁用,禁用后表单无法向后端传输该数据
selected:默认选中该项
value:定义提交时的选项值
-->
label标签
定义:
- label 标签为 input 元素定义标注(标记)。
说明:
- label 元素不会向用户呈现任何特殊效果。
- label 标签的 for 属性值应当与相关元素的 id 属性值相同。
<!--
label标签本身不会产生任何特殊效果,通常与input一起使用
用来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和该标签相关的表单控件上。
-->
<form action="">
<!--方式一-->
<!--当用户点击用户名时,焦点会自动转到input输入框上-->
<label for="username">用户名:</label>
<input type="text" id="username" name="username">
<!--方式二-->
<label for="username">用户名:
<input type="text" id="username" name="username">
</label>
</form>
textarea多行文本
<!--textarea标签:文本域标签-->
<textarea name="memo" id="memo" cols="30" rows="10">
默认内容
</textarea>
<!--
属性说明:
name:名称
rows:行数
cols:列数
disabled:禁用
-->
验证form表单提交数据
# 能够出发form表单提交数据的按钮
'''
1、<input type="submit" value="注册">
2、<button>点我</button>
'''
# 所有获取用户输入的标签 都应该有name属性
'''
后端会通过name来获取前端表单提交的数据
name就类似于字典的key
用户的数据就类似于字典的value
<p>gender:
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女
</p>
'''
# 偷窥后端框架的基本使用(flask)
'''
环境准备:pip install Flask
'''
# 后端
from flask import Flask,request
app = Flask(__name__)
# 设置路由,methods不设置则默认只能支持get请求
@app.route('/index/', methods=['GET','POST'])
def index():
print(request.form) # 获取form表单提交过来的非文件数据
print(request.files) # 获取文件数据
file_obj = request.files.get('photo') # 获取对应文件数据
file_obj.save(file_obj.name) # 保存文件数据
return 'OK'
app.run()
<!--
# 前端
"""
form表单提交文件需要注意
1.method必须是post
2.enctype="multipart/form-data"
enctype类似于数据提交的编码格式
默认是urlencoded 只能够提交普通的文本数据
formdata 就可以支持提交文件数据
"""
-->
<h1>注册页面</h1>
<!--在该form标签内部书写的用户数据都会被form标签提交给后端-->
<!--
action:表单提交的后端路径
1.什么都不写 默认就是朝当前页面所在的url提交数据
2.写全路径:https://www.baidu.com 朝百度服务端提交
3.只写路径后缀action='/index/'
-->
<form action="http://127.0.0.1:5000/index/" method="post" enctype="multipart/form-data">
<p>
<label for="id">序号:</label>
<input type="text" id="id" disabled value="1"> <!--readonly-->
</p>
<p>
<label for="user">用户名:</label>
<input type="text" id="user">
</p>
<p>
<label for="password">密码:</label>
<input type="password" id="password">
</p>
<p>性别:
<input type="radio" name="gender" value="male" checked>男
<input type="radio" name="gender" value="female">女
</p>
<p>
<label for="birth">出生日期:</label>
<input type="date" id="birth" name="birth">
</p>
<p>爱好:
<input type="checkbox" name="hobby" value="read">阅读
<input type="checkbox" name="hobby" value="animation" checked>动漫
<input type="checkbox" name="hobby" value="running">跑步
</p>
<p>
<label for="photo">上传头像:</label>
<input type="file" id="photo" name="photo">
</p>
<p>所在地:
<select name="city">
<option value="bj">北京</option>
<option value="sh" selected>上海</option>
<option value="sz">深圳</option>
</select>
</p>
<p>
<label for="about_me">自我介绍:</label>
<textarea name="about_me" id="about_me" cols="20" rows="10" maxlength="20"></textarea>
</p>
<p>
<input type="submit" name="submit" value="提交">
<input type="button" name="btn" value="按钮">
<input type="reset" name="reset" value="重置">
</p>
</form>