前端 之HTML基础

1.前端

1.1定义:

​ -任何与用户直接打交道的操作界面可以称之为是一个前端。

​ -比如: 电脑显示界面 手机界面 Ipad

1.2软件开发架构下的

​ -cs

​ -bs (本质就是cs)

1.3web服务的本质

​ -浏览器窗口输入一个网址敲回车发生了那些事情:

​ 1.朝着指定的服务端发送请求

​ 2.服务端接收相应的请求

​ 3.服务端返回相应的响应

​ 4.浏览器接收响应,按照特定的规则渲染页面展示给用户看。

1.4HTTP协议

-超文本传输协议

​ 规定了浏览器与服务端之间的数据传输的格式

一、四大特性

​ 1.基于请求的响应

​ 一次请求对应一次响应

​ 2.基于TCP/IP作用于应用层之上的协议

​ 3.无状态

​ -不保留客户的状态

​ -无论你来多少次,我都待你是初见(所以才需要cookies ,session ,token)

​ 4.无连接

​ -长链接 websocket(类似于http协议下的打补丁) 聊天室相关的

二、数据的格式

​ 请求格式:

​ 请求首行(请求方式 协议版本)

​ 请求头(一大堆的k,v键值对)

​ 空一行

​ 请求体(携带的数据,并不是一直都有,有时候可能是空的,取决于你的请求方式)

​ 响应格式

​ 响应首行(响应状态码)

​ 响应头(一大堆的k v键值对)

​ 空一行

​ 响应体(浏览器展示给用户看的数据)、

三、响应状态码

用数字来表示一大堆的提示信息

​ 1XX :服务端已经成功接收打扫客户端的数据正在处理,你可以继续提交

​ 2XX:200 请求成功 服务端已经返回了你想要的数据

​ 3XX:重定向(原本想访问的A 但是内部会自动给你转到B上面)

​ 4XX :404 请求资源不存在,403 你当前不具备请求该资源的条件

​ 5XX:500服务端内部错误,机房着火 爆炸了等、

公司内部也可以自己定制自己的响应状态码

1.5请求方式:

​ 1.get 请求

​ -朝服务端要资源(获取数据)

​ 类似于浏览器窗口输入www.baidu.com获取百度的shouye

​ 2.post请求

​ -朝服务端提交数据(提交数据)

​ 类似于登录注册的功能

二、HTML

-超文本标记语言

在学习html的时候,你只要记住每一个标签标示什么意思就可以了HTML

-如果你想让你的页面能够被浏览器识别并且展示出好看的样子,你就必须是写html代码

-浏览器能识别的语言非常少

​ HTML/XML CSS JS

-扩展知识点:XML也可以书写前端页面,主要用于odoo框架,书写企业内部管理软件

HTML注释  #### 我们可以用ctrl +?来处理注释
	注释是代码之母
	单行注释:<!--单行-->
	多行注释:<!--
			多行注释1
			多行注释2
			-->


​ 补充:由于html页面结构比较复杂 内容比较多 不便于后期的维护 修改
​ 通常在写页面的时候 习惯用下面的方式来人为的划分代码区域




	<!--左侧菜单栏样式结束-->

HTML的文档结构

<html>
		<head></head>:head内放的内容不是给用户看的 是给浏览器去识别做相应操作的
		<body></body>:body内放的内容就是浏览器展示给用户看到的花里胡哨的页面
	</html>
HTML文档打开方式
	1.pycharm自动调用浏览器打开(推荐)  #右上角有很多的浏览器的可以选择
	2.手动查找路径之后选择浏览器打开

标签的分类1
	1.双标签   比如:<h1>'big boy !!!'</h1>  有头有尾
	2.自闭和标签  比如:<img src="data:ima-> 
1.head内常用的标签

title:定义网页的标题

style:内部支持直接写的css代码 改颜色等等操作

link 引入的外部的css文件

script:

​ 1.内部可以直接编写js代码

​ 2.可以通过src属性引用外部的js代码

meta:

​ name 属性:

​ Keywords 关键字 用户输入这些关键字,网页可以与这个匹配。 比如:淘宝

​ description 对于网页的功能的描述 。比如:淘宝的介绍淘宝的用途

注意:书写标签的时候,你需要写标签的名字,之后tab键就可以自动补全 emmet插件

是自带的 不是pycharm的提供的

URL:
-统一资源的定位符 简而言之,就是链接

2.body内常用的标签

你所看到的华丽花哨的页面,其实内部都是html的代码,很丑很乱

1.基本标签


​ h1~h6:标题标签 1级到6级的标题
​ s:删除线 #中间加了一条横线
​ b:加粗
​ u:下划线
​ i:斜体
​ p:独占一行
​ br:换行
​ hr:分割线

<!--<h1>dfgg</h1>-->
<!--<h1>vvvf</h1>-->
<!--<h3>dddff</h3>-->
<!--<h4>ddd</h4>-->
<!--<h5>ddd</h5>-->
<!--<h6>ddd-->
<!--ddd</h6>-->

<s> 我是s</s>
<u> 我是s</u>
<b> 我是s</b>
<i> 我是s</i>

<p> 明月几时有,把酒问青天</p>
<br>
<p> 明月几时有,把酒问青天</p>
<hr>
<p> 明月几时有,把酒问青天</p>
<p> 明月几时有,把酒问青天</p>

2.特殊标签

特殊符号
&nbsp;  	空格
<p>a大于b     a &gt; b</p>
<p>a小于b     a &lt; b</p>
<p>a&b       a &amp; b</p>
<p>人民币     &yen;10000000000</p>
<p>版权标识   &copy;</p>
<p>注册商标   &reg;</p>
<p>山重水复疑无路,柳暗&nbsp;&nbsp;&nbsp;花明又一村</p>
<p> a小于b a &lt; b </p>
<p> a大于b a &gt; b </p>
<p> a 和b a &amp; b </p>
<p> 人民币 &yen;1000000 </p>
<p> 版权标识 &copy;</p>
<p> 注册商标 &reg;</p>
>>>>>>>>>>>>>>>>>>>>>>>>
山重水复疑无路,柳暗   花明又一村

a小于b a < b

a大于b a > b

a 和b a & b

人民币 ¥1000000

版权标识 ©

注册商标 ®
标签的分类2
1.块儿级标签
独占一行  h1~h6  p   br   hr   div 

1.块儿级标签内部可以嵌套任意的块儿级标签和行内标签
2.特列:p虽然是块儿级标签 但是它的内部只能嵌套行内标签 不能嵌套块儿级标签
    如果嵌套了 没有问题 知识不符合html语法规范




2.行内标签    u  s  i  b  span
自身文本多大 就占多大
行内标签内部不能嵌套块儿级标签和行内标签

3.常用标签

div  块儿级标签
span  行内标签
本身没有任何特殊意义
但是这两个确实使用最多的 这两个标签是用来做前期的页面布局的



img  图片标签
<img src="http://img1.imgtn.bdimg.com/it p=0.jpg" alt="有问题">
src
1.可以写一个网站图片地址
2.还可以写本地的图片地址
3.url(自动朝该url发送get请求要数据)
alt
当图片加载不出来的时候 默认展示的提示信息


title
当鼠标悬浮在图片上的时候 展示的提示信息
<img src="http://f.hipn1a125.jpg" alt="架构图" title="这个是七娃"width="200px" >
width,height
修改一个 另外一个会自动等比例缩放
如果两个都修改图片就会失真

a  链接标签(点一个a+tab 就会弹出)
href
1.放一个url
点击就会跳转到该url所对应的资源
<a href="http://image.baidu.com/">点击这里</a>


target
控制是否在当前页跳转
默认是在当前页跳转
_self
新建页面跳转
_blank
<a href="http://image.baidu.com/" target="_blank">点击这里</a>
锚点功能
href不单单可以写url 也可以写另外一个a标签id值
点击就会跳转到该id值所对应的a标签所在的位置
<a href="" id="d1">页首</a>
<div style="height: 1000px; background-color: red"></div>
<a href="" id="d2">页中</a>
<div style="height: 1000px; background-color: red"></div>
<a href="#d1">回到顶部</a>
<a href="#d2">回到中间</a>
标签应该具备的属性
1.id属性:类似于身份证号  用来唯一标识当前html页面中的某一个标签
   在同一个html页面中 id值不能重复
2.class属性:类似于面向对象的继承
  直接引用别的类的样式

4.列表标签

	 
    无序列表(较多) #####比较常用
    ul
    li
    只要页面上出现了比较有规则排列的文本 基本上都可以用无序列表来实现
<p>无序标签</p>
<ul>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
</ul>
 
 

    有序列表
    ol
    li
<p>无序表签</p>
<ol type="a">
<li>1111</li>
<li>222</li>
<li>3333</li>
<li>4444</li>
<li>5555</li>
</ol>


    标题列表
    dl 	
    dt标题
    dd内容
<p>标题列表</p>
<dt>班级学生</dt>
<dd>标题1</dd>
<dd>标题2</dd>
<dd>标题3</dd>		

5.表格标签

	
    表格标签(******)
    展示网站数据的时候  一般情况下可以使用表格标签
    <table>
    <thead>
    <tr>dt
    <th></th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td></td>
    </tr>
    </tbody>
    </table>
    先表格标签 先写结构 然后写数据-----table-->thead--->tbody
    为了和table表区分 我们这里的加t的方式操作

    一个tr就是一行
    th和td之分   一个加粗一个不加粗  
    通常情况下表头用th,表单内容用td
    <table> ####<table border="1">可以给表加线
 <thead>
 <tr>
     <th>姓名</th>
     <th>年龄</th>
     <th>爱好</th>
 </tr>

 </thead>
    <tbody>
<tr>
    <td>david</td>
    <td>18</td>
    <td>study</td>
</tr>
<tr>
    <td>sean</td>
    <td>22</td>
    <td>hjk</td>
</tr>
<tr>
    <td>json</td>
    <td>17</td>
    <td>zhy</td>
</tr>

    </tbody>
</table>
>>>>>>>>>>>>>>>>>>>>>>>


姓名	年龄	爱好
david	18	study
sean	22	hjk
json	17	zhy

6.表单标签

form标签
获取用户输入(输入,选择,上传文件....)并且将数据打包发送给后端

action参数
用来控制数据提交的路径(到底朝哪个后端服务器提交数据)
三种写法:
    1.不写 默认就是朝当前该页面所在的地址提交数据
    2.全路径(https://www.baidu.com)
    3.只写路径后缀(/index/) 

    获取用户输入 input标签  该标签是一个行内标签

    input类似于前端的变形金刚
    type属性
    text  普通文本
    password  密文
    date   日期
    radio  多选一
    checkbox  多选多
    默认选种  checked="checked"
    当标签的属性名和属性值相同的时候 可以只写属性名	
    女<input type="radio" name="gender" checked="checked">
    简写
    女<input type="radio" name="gender" checked>
    reset    重置
    button   普通按钮
    submit   触发form表单提交动作
    file     获取文件
    select标签  下拉框
    一个个选项就是一个个option标签
    默认是单选的
    可以加一个multiple该成多选
    <select name="" id="" multiple>  ###可以选择多个multiple
    <option value="">新垣结衣</option>
    <option value="">明老师</option>
    <option value="">嫖老师</option>
    <option value="">波老师</option>
    </select>
    如何让option标签默认选中
    加selected="selected"  
    <select name="" id="" multiple>
    <option value="" selected="selected">新垣结衣</option>
    <option value="">明老师</option>
    <option value="" selected>嫖老师</option>
    <option value="">波老师</option>
    </select>

    textarea标签   获取大段文本


    label通常是配合input一起使用的
    for用来填写对应的input标签id值
    点击label标签内的内容 会自动让对应的input标签	聚焦



    能够触发form表单提交数据的按钮(******)
    <input type="submit">
    可以通过value属性来指定按钮文本内容
    <input type="submit" value="注册">
    <button>点我</button>


    input获取到的用户输入就类似于是字典的value
    input中的name属性就类似于是字典的key
  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<form action="">
<p><label for="">用户名:<input type="text" id="d1" name="user" ></label></p>
<p><label for="">密码:<input type="password" name="password"></label></p>
<p><label for="">生日:<input type="date"name="date"></label></p>
<p><label for="">性别:
    男<input type="radio"name="gender">
    女<input type="radio"name="gender" checked></label>
</p>
<p><label for="">爱好:
    篮球<input type="checkbox" name="hobby">
    足球<input type="checkbox" name="hobby">
    水球<input type="checkbox" name="hobby" checked>
</label></p>
<p><label for="">省份:
    <select name="province" id="">
        <option value="">北京</option>
        <option value="">南京</option>
        <option value="">上海</option>
    </select>
</label></p>
<p><label for="">老师:
    <select name=""  multiple>
    <option value="" selected>明老师</option>
    <option value=""  >波老师</option>
    <option value="" selected>静老师</option>
        </select>
</label></p>
<p>
    个人简介:<textarea name="" id="" cols="30" rows="10"></textarea>
</p>

    <p>个人简介:
        <input type="file">
    </p>

<p>
    <input type="submit" value = '注册'>
    <input type="reset" value = '重置'>
    <input type="button" value = '按钮'>
    <button>点我</button>
</p>











注意事项
1.获取用户输入的标签 都是用value属性来存放用户的输入
获取用户输入的标签都应该有name属性  就类似于字典的key
value属性就类似于字典的value
2.如何给input设置默认
可以直接给input标签加value属性
3.input框如何设置提示信息
username:<input type="text" value="jason" placeholder="用户名">
###value= 'jason'是指的默认的名字,如果没有的话,用的是placeholder = '用户名'

 验证form表单提交数据
    后端框架
    Django

    Flask

    Tornado

    Flask框架
    pip3 install Flask

    get请求能够携带参数 但是参数的携带方式是直接跟在url后面的
    url?xxx=ooo&yyy=bbb&lll=ccc
    特点:
        1.数据全是明文
        2.数据大小有限制   大概应该可能在4KB左右吧...
        3.get请求不应该携带隐私信息
     post可以拿到信息
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
<form action="http://127.0.0.1:5000/index" method="post" enctype="multipart/form-data">#######enctype 这个参数修改现在这样子,可以接收文件,不修改的话 ,就不能接收文件
    <p>username: <input type="text" value="jason" placeholder=" 用户名" name = 'username'></p>
    <p>password: <input type="password" name="password"></p>
    <p>date: <input type="date" name="birth"></p>
    <p>gender:
        男:<input type="radio" name="gender" value="male">
        女:<input type="radio" name="gender" value="female">
    </p>
    <p>hobby:
        篮球<input type="checkbox" name="hobby" value="basketball">
        足球<input type="checkbox" name="hobby" value="football">
        双色球<input type="checkbox" name="hobby" value="doublecolorball">
    </p>
    <p>省份:
        <select name="province" id="">
            <option value="bj">北京</option>
            <option value="sh">上海</option>
            <option value="bj">深圳</option>
        </select>
    </p>
    <p> 老师:
        <select name="gf" id="" multiple>
            <option value="m">明老师</option>
            <option value="c">苍老师</option>
            <option value="m">tank老师</option>
            <option value="s">sean老师</option>
        </select>
    </p>
    <p>个人间接:
        <textarea name="info" id="" cols="30" rows="10"></textarea>

    </p>
    <p>文件:
        <input type="file" name="myfile">
    </p>
    <input type="submit" value="提交">

</form>
</body>
</html>

##这个是Flask的框架

from flask import Flask, request
app = Flask(__name__)
@app.route('/index',methods = ['GET','POST'])
def XX():

    print(request.form)  #获取普通数据
    print(request.files) #获取文件
    file_obj = request.files.get('myfile') 
    file_obj.save('xxx.png')
    ###上面的2步操作可以把文件保存当前路径里
    return 'OK'
app.run()

原文地址:https://www.cnblogs.com/bs2019/p/12099238.html