HTTP協議介紹 什麼是HTTP協議 超文本傳輸協議,規定了瀏覽器與服務端之間數據傳輸的格式。 HTTP協議的四大特性 基於請求響應 一次請求對應一次響應 基於TCP/IP作用於應用層之上的協議 無狀態 不保留客戶端的狀態(如記錄用戶的登錄密碼和賬戶) 因此產生了cookie,session,tok ...
HTTP協議介紹
什麼是HTTP協議
超文本傳輸協議,規定了瀏覽器與服務端之間數據傳輸的格式。
HTTP協議的四大特性
- 基於請求響應
- 一次請求對應一次響應
- 基於TCP/IP作用於應用層之上的協議
- 無狀態
- 不保留客戶端的狀態(如記錄用戶的登錄密碼和賬戶)
- 因此產生了cookie,session,token
- 無連接
- 請求和響應結束後就斷開了連接(瞬間的連接)
長鏈接
websocket
(類似於http協議
的大補丁),應用場景:聊天室相關的。
數據格式
數據格式分為請求格式和響應格式
請求格式:
- 請求首行(包含請求方式,協議版本等)
- 請求頭(一大堆k, v鍵值對)
- 請求體
- 攜帶的數據 並不是一直都有 有時候可能是空的 取決於你的請求方式
響應格式:
- 響應首行 (響應狀態碼等)
- 響應頭(一大堆k, v鍵值對)
- 響應體(瀏覽器展示給用戶看的數據)
響應狀態碼
用數字來表示一大堆提示信息
1XX:
服務端已經成功接收到客戶端的數據正在處理 你可以繼續提交
2XX:
200請求成功 服務端已經返回了你想要的數據
3XX:
重定向(原本想訪問A但是內部自動給你轉到了B上面)
4XX:
404請求資源不存在,403你當前不具備請求該資源的條件
5XX:
500服務端內部錯誤 可能是伺服器宕機
公司內部可以自己定製自己的響應狀態碼
請求方式
1.get請求
朝服務端要資源(獲取數據)
類似於瀏覽器視窗輸入www.baidu.com獲取百度首頁
2.post請求
朝服務端提交數據(提交數據)
類似於登錄註冊功能
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是什麼?
- 超文本標記語言(Hypertext Markup Language, HTML)是一種用於創建網頁的標記語言。
- 本質上是瀏覽器可識別的規則,我們按照規則寫網頁,瀏覽器根據規則渲染我們的網頁。對於不同的瀏覽器,對同一個標簽可能會有不同的解釋。(相容性問題)
- 網頁文件的擴展名:.html或.htm
HTML不是什麼?
HTML是一種標記語言(markup language),它不是一種編程語言。
HTML使用標簽來描述網頁。
HTML文檔結構
最基本的HTML文檔:
# 單行註釋:<!--單行-->
# 多行註釋:<!--
多行註釋1
多行註釋2
-->
<!DOCTYPE html>
<html lang="zh-CN">
<!--head定義了HTML文檔的開頭部分。它們之間的內容不會在瀏覽器的文檔視窗顯示。包含了文檔的元(meta)數據。-->
<head>
<meta charset="utf-8">
<!-- title定義網頁的標題,在瀏覽標題欄顯示-->
<title>我是網頁的標題</title>
</head>
<!--<body>、</body>之間的文本是可見的網頁主體內容。-->
<body>
</body>
</html>
1、<!DOCTYPE html>聲明為HTML5文檔。
2、、是文檔的開始標記和結束的標記。是HTML頁面的根元素,在它們之間是文檔的頭部(head)和主體(body)。
3、
、定義了HTML文檔的開頭部分。它們之間的內容不會在瀏覽器的文檔視窗顯示。包含了文檔的元(meta)數據4、
5、
、之間的文本是可見的網頁主體內容。註意:對於中文網頁需要使用 聲明編碼,否則會出現亂碼。有些瀏覽器會設置 GBK 為預設編碼,則你需要設置為 。
HTML標簽格式
- HTML標簽是由尖括弧包圍的關鍵字,如
<html>
,<div>
等 - HTML標簽通常是成對出現的,比如:
<div>
和</div>
,第一個標簽是開始,第二個標簽是結束。結束標簽會有斜線。 - 也有一部分標簽是單獨呈現的,比如:
<br/>
、<hr/>
、<img src="1.jpg" />
等。 - 標簽裡面可以有若幹屬性,也可以不帶屬性。
標簽的語法:
- <標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”……>內容部分標簽名>
- <標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”…… />
幾個很重要的屬性:
- id:定義標簽的唯一ID,HTML文檔樹中唯一
- class:為html元素定義一個或多個類名(classname)(CSS樣式類名)
- style:規定元素的行內樣式(CSS樣式)
HTML註釋
<!--註釋內容-->
註釋是代碼之母。
<!DOCTYPE>
標簽
<!DOCTYPE>
聲明必須是 HTML 文檔的第一行,位於 <html>
標簽之前。
<!DOCTYPE>
聲明不是 HTML 標簽;它是指示 web 瀏覽器關於頁面使用哪個 HTML 版本進行編寫的指令。
HTML常用標簽
head內常用標簽
標簽 | 意義 |
---|---|
<title></title> |
定義網頁標題 |
<style></style> |
定義內部樣式表 |
<script></script> |
定義JS代碼或引入外部JS文件 |
<link/> |
引入外部樣式表文件或網站圖標 |
<meta/> |
定義網頁原信息 |
Meta標簽
Meta標簽介紹:
<meta>
元素可提供有關頁面的元信息(mata-information),針對搜索引擎和更新頻度的描述和關鍵詞。<meta>
標簽位於文檔的頭部,不包含任何內容。<meta
>提供的信息是用戶不可見的。
meta標簽的組成:meta標簽共有兩個屬性,它們分別是http-equiv屬性和name 屬性,不同的屬性又有不同的參數值,這些不同的參數值就實現了不同的網頁功能。
1.http-equiv屬性:相當於http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變數值。
<!--指定文檔的編碼類型(需要知道)-->
<meta http-equiv="content-Type" charset=UTF8">
<!--2秒後跳轉到對應的網址,註意引號(瞭解)-->
<meta http-equiv="refresh" content="2;URL=https://www.baidu.com">
<!--告訴IE以最高級模式渲染文檔(瞭解)-->
<meta http-equiv="x-ua-compatible" content="IE=edge">
2.name屬性: 主要用於描述網頁,與之對應的屬性值為content,content中的內容主要是便於搜索引擎機器人查找信息和分類信息用的。
<meta name="keywords" content="meta總結,html meta,meta屬性,meta跳轉">
<meta name="description" content="百度網頁">
body內常用標簽
基本標簽(塊級標簽和內聯標簽)
<b>加粗</b>
<i>斜體</i>
<u>下劃線</u>
<s>刪除</s>
<p>段落標簽</p>
<h1>標題1</h1>
<h2>標題2</h2>
<h3>標題3</h3>
<h4>標題4</h4>
<h5>標題5</h5>
<h6>標題6</h6>
<!--換行-->
<br>
<!--水平線--><hr>
特殊字元
內容 | 對應代碼 |
---|---|
空格 | |
> | > |
< | < |
& | & |
¥ | ¥ |
版權 | © |
註冊 | ® |
div標簽和span標簽
div標簽用來定義一個塊級元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。
span標簽用來定義內聯(行內)元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。
塊級元素與行內元素的區別:
所謂塊元素,是以另起一行開始渲染的元素,行內元素則不需另起一行。如果單獨在網頁中插入這兩個元素,不會對頁面產生任何的影響。
這兩個元素是專門為定義CSS樣式而生的。
註意:
關於標簽嵌套:通常塊級元素可以包含內聯元素或某些塊級元素,但內聯元素不能包含塊級元素,它只能包含其它內聯元素。
p標簽不能包含塊級標簽,p標簽也不能包含p標簽。
img標簽
<img src="圖片的路徑" alt="圖片未載入成功時的提示" title="滑鼠懸浮時提示信息" width="寬" height="高(寬高兩個屬性只用一個會自動等比縮放)">
a標簽
超鏈接標簽
所謂的超鏈接是指從一個網頁指向一個目標的連接關係,這個目標可以是另一個網頁,也可以是相同網頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程式。
什麼是URL?
URL是統一資源定位器(Uniform Resource Locator)的縮寫,也被稱為網頁地址,是網際網路上標準的資源的地址。
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
各部分之間用“/”符號隔開。
URL
<a href="http://www.oldboyedu.com" target="_blank" >點我</a>
href屬性指定目標網頁地址。該地址可以有幾種類型:
- 絕對URL - 指向另一個站點(比如 href="http://www.jd.com)
- 相對URL - 指當前站點中確切的路徑(href="index.htm")
- 錨URL - 指向頁面中的錨(href="#top")
target:
- _blank表示在新標簽頁中打開目標網頁
- _self表示在當前標簽頁中打開目標網頁
列表
1.無序列表
<ul type="disc">
<li>第一項</li>
<li>第二項</li>
</ul>
type屬性:
- disc(實心圓點,預設值)
- circle(空心圓圈)
- square(實心方塊)
- none(無樣式)
2.有序列表
<ol type="1" start="2">
<li>第一項</li>
<li>第二項</li>
</ol>
type屬性:
- 1 數字列表,預設值
- A 大寫字母
- a 小寫字母
- Ⅰ大寫羅馬
- ⅰ小寫羅馬
3.標題列表
<dl>
<dt>標題1</dt>
<dd>內容1</dd>
<dt>標題2</dt>
<dd>內容1</dd>
<dd>內容2</dd>
</dl>
表格
表格是一個二維數據空間,一個表格由若幹行組成,一個行又有若幹單元格組成,單元格裡可以包含文字、列表、圖案、表單、數字元號、預置文本和其它的表格等內容。
表格最重要的目的是顯示表格類數據。表格類數據是指最適合組織為表格格式(即按行和列組織)的數據。
表格的基本結構:
<table>
<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: 單元格橫跨多少列(即合併單元格)
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傳送到伺服器上。
伺服器上專門的程式對這些數據進行處理,如果有錯誤會返回錯誤信息,並要求糾正錯誤。當數據完整無誤後,伺服器反饋一個輸入完成的信息。
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),
]
Django接收上傳文件代碼
input
<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:禁用