python全棧 part2 - 001 前端基礎(chǔ)

web框架本質(zhì)

對(duì)于所有的Web應(yīng)用, 本質(zhì)上其實(shí)就是一個(gè)socket服務(wù)端,用戶的瀏覽器其實(shí)是一個(gè)socket客戶端.

#! /usr/bin/env python
# coding: utf-8

import socket

def handle_request(client):
    buf = client.recv(1024)
    client.send("HTTP/1.1 200 ok\r\n\r\n")
    client.send("Hello, Seven")
    
def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost',8000))
    sock.listen(5)
    
    while True:
        connection,address = sock.accept()
        handle_request(connection)
        connection.close()
        
if __name__ == '__main__':
    main()

上述通過(guò)socket來(lái)實(shí)現(xiàn)了其本質(zhì),而對(duì)于真實(shí)開發(fā)中的python web程序來(lái)說(shuō)遮糖,一般會(huì)分為兩部分:服務(wù)器程序和應(yīng)用程序潜支。服務(wù)器程序負(fù)責(zé)對(duì)socket服務(wù)器進(jìn)行封裝棚赔,并在請(qǐng)求到來(lái)時(shí)患民,對(duì)請(qǐng)求的各種數(shù)據(jù)進(jìn)行整理寸认。應(yīng)用程序則負(fù)責(zé)具體的邏輯處理洁奈。為了方便應(yīng)用程序的開發(fā),就出現(xiàn)了眾多的Web框架栋盹,例如:Django施逾、Flask、web.py等例获。

不同的框架有不同的開發(fā)方式汉额,但是無(wú)論如何,開發(fā)出的應(yīng)用程序都要和服務(wù)器程序配合榨汤,才能為用戶提供服務(wù)蠕搜。這樣,服務(wù)器程序就需要為不同的框架提供不同的支持收壕。這樣混亂的局面無(wú)論對(duì)于服務(wù)器還是框架讥脐,都是不好的。對(duì)服務(wù)器來(lái)說(shuō)啼器,需要支持各種不同框架旬渠,對(duì)框架來(lái)說(shuō),只有支持它的服務(wù)器才能被開發(fā)出的應(yīng)用使用端壳。這時(shí)候告丢,標(biāo)準(zhǔn)化就變得尤為重要。我們可以設(shè)立一個(gè)標(biāo)準(zhǔn)损谦,只要服務(wù)器程序支持這個(gè)標(biāo)準(zhǔn)岖免,框架也支持這個(gè)標(biāo)準(zhǔn),那么他們就可以配合使用照捡。一旦標(biāo)準(zhǔn)確定颅湘,雙方各自實(shí)現(xiàn)。這樣栗精,服務(wù)器可以支持更多支持標(biāo)準(zhǔn)的框架闯参,框架也可以使用更多支持標(biāo)準(zhǔn)的服務(wù)器。

WSGI(Web Server Gateway Interface)是一種規(guī)范悲立,它定義了使用python編寫的web app與web server之間接口格式鹿寨,實(shí)現(xiàn)web app與web server間的解耦。

python標(biāo)準(zhǔn)庫(kù)提供的獨(dú)立WSGI服務(wù)器稱為wsgiref薪夕。

from wsgiref.simple_server import make_server
 
 
def RunServer(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
 
 
if __name__ == '__main__':
    httpd = make_server('', 8000, RunServer)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

HTML

概念

一套規(guī)則, 瀏覽器認(rèn)識(shí)的規(guī)則.

開發(fā)者如何學(xué)習(xí)HTML

  1. 學(xué)習(xí)HTML規(guī)則
  2. 開發(fā)后臺(tái)程序:
    • 寫HTML文件(充當(dāng)模板)
    • 數(shù)據(jù)庫(kù)獲取數(shù)據(jù),然后替換到html文件的指定位置(Web框架)

本地測(cè)試

  • 找到文件路徑, 直接瀏覽器打開
  • pycharm打開測(cè)試

編寫HTML文件

  • doctype對(duì)應(yīng)關(guān)系
  • html標(biāo)簽, 標(biāo)簽內(nèi)部可以寫屬性 ====> 只能有一個(gè)
  • 注釋:

標(biāo)簽分類

  • 自閉合標(biāo)簽: <meta charset="UTF-8">
  • 主動(dòng)閉合標(biāo)簽: <title>fbo</title>

head標(biāo)簽

在head標(biāo)簽中:

  • meta -> 編碼, 跳轉(zhuǎn), 刷新, 關(guān)鍵字, 描述,IE兼容性
    • <meta http-equiv="X-UA-Compatible" content="IE=IE9;IE=IE8;" />
  • title標(biāo)簽
  • <link />
  • <style />
  • <script>

body標(biāo)簽

  • 圖標(biāo), ? > &lt
  • p標(biāo)簽, 段落
  • br標(biāo)簽, 換行

小結(jié)

所有標(biāo)簽分為:

  • 塊級(jí)標(biāo)簽: div(白板), H系列(加大加粗), p標(biāo)簽(段落和段落之間有間距)
  • 行內(nèi)標(biāo)簽: span(白板)
  • 標(biāo)簽之間可以嵌套
  • 標(biāo)簽存在的意義, css操作, js操作
  • ps:chorme審查元素使用
    • 定位
    • 查看樣式
  • h系列
  • div
  • span
  • input系列 + form標(biāo)簽
    • input type='text' - name屬性, value='fbo'
    • input type='password' - name屬性, value='fbo'
    • input type='submit' - value='提交', 提交按鈕, 表單
    • input type='button' - value='登錄', 按鈕
    • input type='radio' - 單選框 value, checked='checked', name屬性(name相同則互斥)
    • input type='checkbox' - 復(fù)選框 value, checked='checked',name屬性(批量獲取數(shù)據(jù))
    • input type='file' - 依賴form表單的一個(gè)屬性 enctype="multipart/form-data"
    • input type='rest' - 重置
    • <textarea>abc</textarea> - name屬性
    • select標(biāo)簽 - name 內(nèi)部opention value, 提交到后臺(tái), size multiple
  • a標(biāo)簽
    • 跳轉(zhuǎn)
    • 錨 - href='#某個(gè)標(biāo)簽ID' 標(biāo)簽ID不允許重復(fù)
  • img - src, alt, title
  • 列表
    • ul - li
    • ol - li
    • dl - dt,dd
  • 表格 - table
    • thead tr,th
    • tbody tr,td
    • colspan='' 合并單元格, 列
    • rowspan='' 合并單元格, 行
  • label 用于點(diǎn)擊文件,使得關(guān)聯(lián)的標(biāo)簽獲取光標(biāo)
<label for='username'>用戶名:</label>
<input id='username' type="text" name="user" />
  • fieldset - legend

CSS

在標(biāo)簽上設(shè)置style屬性:

background-color: #2459a2;
height:48px

編寫css樣式:

  1. 標(biāo)簽的style屬性
  2. 寫在head里面 style標(biāo)簽中寫樣式
  • id選擇區(qū):
#i1 {
    background-color: #2459a2;
    height: 48px;
}
  • class 選擇器
.名稱 {
    background-color: #2459a2;
    height: 48px;
}

<標(biāo)簽 class='名稱'></標(biāo)簽>
  • 層級(jí)選擇器 (空格)
.c1 .c2 div{
    
}
  • 組合選擇器 (逗號(hào))
#c1,c2,div{
    
}
  • 屬性選擇器 對(duì)選擇的標(biāo)簽再通過(guò)屬性進(jìn)行一次篩選
.c1 [n='alex'] {width:100px; height: 200px;}

優(yōu)先級(jí), 標(biāo)簽上style優(yōu)先,編寫順序,就近原則

css樣式也可以寫在單獨(dú)文件中

<link rel="stylesheet" href="commons.css" />

css注釋:

/* */

邊框:

  • 寬度, 樣式, 顏色 (border: 4px dotted red;)
  • border-left
height, 高度 百分比
width, 寬度 像素, 百分比
text-align:ceter 水平方向居中
line-height, 垂直方向根據(jù)標(biāo)簽高度
color, 字體顏色
font-size, 字體大小
font-weight, 字體加粗

float:
讓標(biāo)簽浪起來(lái), 塊級(jí)標(biāo)簽可以堆疊
老子管不住:<div style="clear: both;"></div>

display:

  • display: none; --讓標(biāo)簽消失
  • display: inline;
  • display: block;
  • display: inline-block; 具有inline,默認(rèn)自己有多少占多少;具有block, 可以設(shè)置高度, 寬度, padding, margin

行內(nèi)標(biāo)簽: 無(wú)法設(shè)置高度,寬度,padding, margin
塊級(jí)標(biāo)簽: 可以設(shè)置高度,寬度, padding, margin

padding 內(nèi)間距
margin(0, auto) 外間距

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脚草,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子原献,更是在濱河造成了極大的恐慌馏慨,老刑警劉巖埂淮,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異写隶,居然都是意外死亡倔撞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門樟澜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叮盘,你說(shuō)我怎么就攤上這事秩贰。” “怎么了柔吼?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵毒费,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我愈魏,道長(zhǎng)觅玻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任培漏,我火速辦了婚禮溪厘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牌柄。我一直安慰自己畸悬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布珊佣。 她就那樣靜靜地躺著蹋宦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咒锻。 梳的紋絲不亂的頭發(fā)上冷冗,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音惑艇,去河邊找鬼蒿辙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滨巴,可吹牛的內(nèi)容都是我干的须板。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼兢卵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼习瑰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起秽荤,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤甜奄,失蹤者是張志新(化名)和其女友劉穎柠横,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體课兄,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牍氛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烟阐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搬俊。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜒茄,靈堂內(nèi)的尸體忽然破棺而出唉擂,到底是詐尸還是另有隱情,我是刑警寧澤檀葛,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布玩祟,位于F島的核電站,受9級(jí)特大地震影響屿聋,放射性物質(zhì)發(fā)生泄漏空扎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一润讥、第九天 我趴在偏房一處隱蔽的房頂上張望转锈。 院中可真熱鬧,春花似錦楚殿、人聲如沸黑忱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甫煞。三九已至,卻和暖如春冠绢,著一層夾襖步出監(jiān)牢的瞬間抚吠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工弟胀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楷力,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓孵户,卻偏偏與公主長(zhǎng)得像萧朝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夏哭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理检柬,服務(wù)發(fā)現(xiàn),斷路器竖配,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法何址,類相關(guān)的語(yǔ)法里逆,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法用爪,異常的語(yǔ)法原押,線程的語(yǔ)...
    子非魚_t_閱讀 31,639評(píng)論 18 399
  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說(shuō)明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,247評(píng)論 1 41
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評(píng)論 0 11
  • 飲食健康不容忽視 01 中午吃飯是個(gè)頭疼的問(wèn)題偎血,感覺每天都是重復(fù)的老三樣诸衔,真是不知道吃什么好。 不巧的是颇玷,單位餐廳...
    黎明即起閱讀 735評(píng)論 2 4