Python學習筆記 25 , Web開發

2021-10-05 20:51:09 字數 2565 閱讀 1228

web開發經歷的幾個階段:

靜態web頁面

cgi(common gateway inte***ce), 處理用法傳送的動態資料,用c/c++編寫

asp/jsp/php, 指令碼語言開發效率高,與html結合緊密,因此迅速取代cgi模式

mvc, 為了解決直接用指令碼語言嵌入html導致的可維護性差的問題,web應用也引入了mvc模式。asp發展為asp.net,jsp和php也有一大堆mvc框架。

總結一下http請求的過程:

瀏覽器首先向伺服器傳送http請求,伺服器向瀏覽器返回http響應,響應包括響應**(200表示成功),響應型別,攜帶的內容通常為乙個body,包含響應內容,網頁的html原始碼就在body中;如果瀏覽器還需要繼續像伺服器請求其他資源,比如,就在此發出http請求,重複步驟1、2.

我們不希望接觸到tcp連線、http原始請求和響應格式,所以需要乙個統一的介面,能讓開發人員專心用python編寫web業務。這個介面就是wsgi: web server gateway inte***ce。

wsgi只要求web開發者實現乙個函式,就可以響應http請求。

def

(environ, start_response)

: start_response(

'200 ok',[

('content-type'

,'text/html')]

)return

[b''

]

start_response()傳送了http響應的header,它接受兩個引數,乙個是http響應碼,乙個是一組list表示的http header,每個header用乙個包含兩個strtuple表示。通常情況下,都應該把content-type頭髮送給瀏覽器。其他很多常用的http header也應該傳送。然後,函式的返回值作為http響應的body傳送給瀏覽器。

)# 開始監聽http請求:

)在瀏覽器中輸入http://localhost:8000/後就可以看到結果。

小結

無論多麼複雜的web應用程式,入口都是乙個wsgi處理函式。http請求的所有輸入資訊都可以通過envrion獲得,http響應的輸出都可以通過start_response()加上函式返回值作為body。

wsgi介面是用來幹什麼的呢? 它是用來接收並處理 request 的!乙個基本的 wsgi 介面需要傳入兩個引數: 乙個包含 request 資訊的字典;乙個返回 response 的方法。 這兩個方法需要由 web 伺服器提供,即由伺服器呼叫 wsgi 介面從而實現完整 web 應用的流程。

flask通過python的裝飾器在內部自動地把url和函式給關聯起來。

from flask import flask

from flask import request

'/', methods=

['get'

,'post'])

defhome()

:return

'''/signin'

, methods=

['get'])

defsignin_form()

:return

''''''

'/signin'

, methods=

['post'])

defsignin()

:# 需要從request物件讀取表單內容:

if request.form[

'username']==

'admin'

and request.form[

'password']==

'password'

:return

''return

''if __name__ ==

'__main__'

:)

常見的python web框架有:

小結在編寫url處理函式時,除了配置url外,從http請求拿到使用者資料也是非常重要的。web框架都提供了自己的api來實現這些功能。flask通過request.form['name']來獲取表單內容。

WEB學習筆記

一.html的骨架結構 head html 二.軟體快捷鍵的使用目前在使用的軟體 hbuilder和vs code hbuilde 1.快速生成乙個注釋 ctrl 2.快速生成html5 html 5 tap 3.快速生成html4s html 4s tap 4.快速生成htmlxt html xt...

Python3 7學習筆記25 裝飾器

python3.7學習筆記25 裝飾器 我們在之前的學習中其實接觸過很多的裝飾器。它本質其實就是乙個函式。def demo7 func print 模擬裝飾器 func def demo8 print 簡單裝飾器的應用 test demo7 demo8 test usr local bin pyth...

c 學習筆記25 謂詞

1 謂詞概念 概念 2 一元謂詞 include using namespace std include include include 1.一元謂詞 class mycompare void test01 for vector int iterator it v.begin it v.end it...