當前位置:首頁 » 編程語言 » pythonweb搭建

pythonweb搭建

發布時間: 2024-08-02 19:34:24

㈠ 如何用python搭建一個最簡單的Web伺服器

用Python建立最簡單的web伺服器

利用Python自帶的包可以建立簡單的web伺服器。在DOS里cd到准備做伺服器根目錄的路徑下,輸入命令:

  • python -mWeb伺服器模塊[埠號,默認8000]

  • 例如:

  • python -m SimpleHTTPServer 8080

  • 然後就可以在瀏覽器中輸入

  • http://localhost:埠號/路徑

  • 訪問伺服器資源。
    例如:

  • http://localhost:8080/index.htm(當然index.htm文件得自己創建)

  • 其他機器也可以通過伺服器的IP地址來訪問。

    這里的「Web伺服器模塊」有如下三種:

  • BaseHTTPServer: 提供基本的Web服務和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。

  • SimpleHTTPServer: 包含執行GET和HEAD請求的SimpleHTTPRequestHandler類。

  • CGIHTTPServer: 包含處理POST請求和執行CGIHTTPRequestHandler類。

㈡ python web開發用什麼框架

對初學者來說,循序漸進是最重要的,我推薦學習 Flask(Welcome | Flask (A Python Microframework))

Flask 很輕,花很少的成本就能夠開發一個簡單的網站。非常適合初學者學習。
Flask 框架學會以後,可以考慮學習插件的使用。例如使用 WTForm + Flask-WTForm 來驗證表單數據,用 SQLAlchemy + Flask-SQLAlchemy 來對你的資料庫進行控制。
BTW:果殼網基於 Flask 開發的。
另外也簡單介紹下其他框架:
1. Django。如樓上所說,是一個全能型框架。目前 Django 的使用面還是很廣的,有學習的價值,但是不建議初學者學習,因為要學習的東西太多了,一下子難以吸收會失去興趣。當然,Django 的目的是為了讓開發者能夠 快速 地開發一個網站,它提供了很多模塊,其中我最喜歡的就是 admin 模塊,http://your.site.com/admin 就進入了網站的後台(內置的哦~)方便地對數據進行操作,等等。。。。因此,如果對 Django 熟悉的話,papapa 一下子就寫好一個網站的原型了。
2. Tornado。傳說中性能高高的框架。Tornado 是一個很好的框架,支持非同步處理的功能,這是它的特點,其他框架不支持。另外一點是,Tornado 的設計似乎更注重 RESTful URL。但 Tornado 提供了網站基本需要使用的模塊外,剩下的則需要開發者自己進行擴展。例如資料庫操作,雖然內置了一個 database 的模塊(後來獨立出去了,現在叫做 torndb,bdarnell/torndb · GitHub)但是不支持 ORM,快速開發起來還是挺吃力的。如果需要 ORM 支持的話,還需要自己寫一層將 SQLAlchemy 和 Tornado 聯系起來,而且這里還有一個坑。
BTW:知乎就是基礎 Tornado 開發的。
3. Bottle。Bottle 和 Flask 都屬於輕量級的 Web 框架。但是 Bottle 似乎落寞了。我覺得跟他的 API 設計有關系。個人認為 Bottle 使用起來不那麼順手,因此也用得少。這里不做太多介紹。
4. web.py。也是很輕的一個框架,使用不多,也不做介紹。
5. web2py。我看樓上都沒有對這個框架做介紹。這個框架是 Google 在 web.py 基礎上二次開發而來的,兼容 GAE 。性能據說很高,曾經用他來做自己的主頁,感覺也還不錯。缺點同樣是對擴展支持不太好,需要自己進行擴展。
6. Quixote。著名的 豆瓣 就是基於 Quixote 開發的。跟上面幾個框架不同,Quixote 的路由會有些特別。另外 Quixote 的性能據說也好。

㈢ (web開發)用python創建一個最簡單的網站

本文,用python來創建一個最簡單的網頁。

1先定返洞義一個函數,用來向網站伺服器發送請求:defyingyong(environ,start_response):start_response(餠OK',[('Content-Type','text/html')])return[b'<h1>HowAre!</h1>']要求網站在網頁上顯示粗體的HowAre!

2導入wsgi模塊的子模塊,用來創建伺服器。fromwsgiref.simple_serverimportmake_server。

3創建伺服器,IP為空,埠號為900。a=900httpd=make_server('',a,yingyong)這個伺服器將調用前面的函數yingyong。

4讓伺服器開始運行,並長時間運行。httpd.serve_forever()forever,讓伺服器永遠運行,除非伺服器被迫關閉。伺服器在哪裡?就在python裡面,關閉python編譯器,就等於關閉了服喚世模務器。

5再訪問步驟一裡面的鏈接,就得到如下網頁。這說明伺服器開始運行了。刷新這個網頁,就相當於重復訪問這個網頁。每訪問一次(刷新一次),都會向伺服器發送請求,在python編譯器裡面會有所體現。

6關閉python編譯器,伺服器也就關閉了,這個網頁會立刻崩潰。再打開python並運行這段代碼,這個網頁又會立刻恢復。完整代碼如下:defyingyong(environ,start_response):start_response(餠OK',[('Content-Type','text/html')])return[b'<h1>HowAre!</h1>']fromwsgiref.simple_serverimportmake_servera=900httpd=make_server('',a,yingyong)httpd.serve_forever()。

1、開始之前,請先用瀏覽器訪問下面這個網頁:l')])

return[b'<h1>HowAre!</h1>']

要求網站在網頁上顯示粗體的HowAre!

3、導入wsgi模塊的子模塊,用來創建伺服器。

fromwsgiref.simple_serverimportmake_server

4、創建伺服器,IP為空,埠號為900。和緩

a=900

httpd=make_server('',a,yingyong)

這個伺服器將調用前面的函數yingyong。

5、讓伺服器開始運行,並長時間運行。

httpd.serve_forever()

forever,讓伺服器永遠運行,除非伺服器被迫關閉。

伺服器在哪裡?就在python裡面,關閉python編譯器,就等於關閉了伺服器。

6、再訪問步驟一裡面的鏈接,就得到如下網頁,這說明伺服器開始運行了。

7、刷新這個網頁,就相當於重復訪問這個網頁,每訪問一次(刷新一次),都會向伺服器發送請求,在python編譯器裡面會有所體現。

8、關閉python編譯器,伺服器也就關閉了,這個網頁會立刻崩潰。

再打開python並運行這段代碼,這個網頁又會立刻恢復。

完整代碼如下:

defyingyong(environ,start_response):

start_response(餠OK',[('Content-Type','text/html')])

return[b'<h1>HowAre!</h1>']

fromwsgiref.simple_serverimportmake_server

a=900

httpd=make_server('',a,yingyong)

httpd.serve_forever()

㈣ python 進行web 開發 怎麼配置環境

Python的目前有兩個版本,Python 2.7.5 和 Python 3.3.2。Python 3.x 與 2.x 不僅僅是版本的新舊的區別那麼簡單,Python3.x 是一個全新的東西。

1、下面的 Python 2.7.5 這個版本是 .msi 格式的,所以直接安裝即可,將 Python 2.7 安裝在了 E:Python 下。

然後就是配置環境變數, 具體不多說,直接附圖:

㈤ Python 有哪些好的 Web 框架

1、Django框架
優點:是一個高層次Python Web開發框架,特點是開發快速、代碼較少、可擴展性強。Django採用MTV(Model、Template、View)模型組織資源,框架功能豐富,模板擴展選擇最多。對於專業人員來說,Django是當之無愧的Python排名第一的Web開發框架。
缺點:包括一些輕量級應用不需要的功能模塊,不如Flask輕便。過度封裝很多類和方法,直接使用比較簡單,但改動起來比較困難。相比於 C,C++性能,Django性能偏低。模板實現了代碼和樣式完全分離,不允許模板里出現Python代碼,靈活度不夠。另外學習曲線也相對陡峭。
2、Flask框架
優點:Flask是一個Python Web開發的微框架,嚴格來說,它僅提供Web伺服器支持,不提供全棧開發支持。然而,Flask非常輕量、非常簡單,基於它搭建Web系統都以分鍾來計時,特別適合小微原型系統的開發。花少時間、產生可用系統,是非常劃算的選擇。
缺點:對於大型網站開發,需要設計路由映射的規則,否則導致代碼混亂。對新手來說,容易使用低質量的代碼創建 「不良的web應用程序」。
3、Pyramid框架
優點:是一個擴展性很強且靈活的Python Web開發框架。上手十分容易,比較適合中等規模且邊開發邊設計的場景。Pyramid不提供絕對嚴格的框架定義,根據需求可以擴展開發,對高階程序員十分友好。
缺點:國內知名度不高,高級用法需要通過閱讀源代碼獲取靈感。默認使用Chameleon模板,靈活度沒有成為一個要素。
4、web.py框架
優點:正如其名,web.py是一個採用Python作為開發語言的Web框架,簡單且強大。俄羅斯排名第一的Yandex搜索引擎基於這個框架開發,Guido van Rossum認為這是最好的Python Web框架,還需要說別的嗎?有事實作證、有大牛認可,用起來吧!
缺點:Web.py並未像其他框架一樣保持與Python 3兼容性的最新狀態。這不僅意味著缺乏對非同步語法的支持,還意味著缺少對已棄用的函數的錯誤。此外,目前尚不清楚維護者是否有計劃在Python 2到達其支持生命周期結束後保持Web.py的最新狀態。
5、Tornado框架
優點:Tornado是一個基於非同步網路功能庫的Web開發框架,因此,它能支持幾萬個開放連接,Web服務高效穩定。可見,Tornado適合高並發場景下的Web系統,開發過程需要採用Tornado提供的框架,靈活性較差,確定場景後再考慮使用不遲。
缺點:Tornado 5.0改進了與Python的本機非同步功能的集成。因此不再支持Python 3.3.並且Python 3.5用戶必須使用Python 3.5.2或更高版本。Tornado 6.0將需要Python 3.5及更高版本,並將完全放棄Python 2支持。

㈥ python 怎麼搭建簡單的web伺服器

利用Python自帶的包可以建立簡單的web伺服器。在DOS里cd到准備做伺服器根目錄的路徑下,輸入命令:x0dx0apython -m Web伺服器模塊 [埠號,默認8000]x0dx0a例如:x0dx0apython -m SimpleHTTPServer 8080x0dx0a然後就可以在瀏覽器中輸入x0dx0ah ttp://loca lhost:埠號/路徑x0dx0a來訪問伺服器資源。 x0dx0a例如:x0dx0ah ttp://local host:808 0/index.h tm(當然index.htm文件得自己創建)x0dx0a其他機器也可以通過伺服器的IP地址來訪問。x0dx0ax0dx0a這里的「Web伺服器模塊」有如下三種:x0dx0ax0dx0aBaseHTTPServer: 提供基本的Web服務和處理器類,分別是HTTPServer和BaseHTTPRequestHandler。x0dx0aSimpleHTTPServer: 包含執行GET和HEAD請求的SimpleHTTPRequestHandler類。x0dx0aCGIHTTPServer: 包含處理POST請求和執行CGIHTTPRequestHandler類。

㈦ 如何用Python寫一個web框架

STEP.1

我們首先得選擇基於什麼協議來寫這種框架。我們可以選擇CGI協議,或者是WSGI介面。如果使用CGI,實際上我們只是按著CGI的規范寫了一個python程序,然後每次伺服器收到請求,就fork一個程序來執行它,然後返回一個http文檔,性能比較低下。對於WSGI,而是一個存在於伺服器和應用間的介面,在WSGI之前,web應用都是依賴於伺服器的,現在流行的python框架都支持WSGI介面。

STEP.2 PEP-333

這一段是PEP-333 所提供的樣例代碼。

def simple_app(environ, start_response):
"""Simplest possible application object"""
status = '200 OK'
response_headers = [('Content-type', 'text/plain')]
start_response(status, response_headers)
return ['Hello world! ']

這里的application被傳入了兩個值。

  • environ

  • start_response。
    environ是一個字典,保存了http請求的信息。
    start_response是一個函數,發送http響應。她有兩個參數status 和 start_headers。

  • status必須是由狀態編號和具體信息組成的字元串,必須符合RFC 2616。

  • start_headers是一個(header_name,header_value) 元組的列表元組列表。其中的hearder_name必須是合法的http header欄位名。在RFC 2616, Section 4.2中有詳細定義。
    當然官方還給出了類的實現。

  • def __init__(self, environ, start_response):


  • self.environ = environ


  • self.start = start_response

  • def __iter__(self):


  • status = '200 OK'


  • response_headers = [('Content-type','text/plain')]


  • self.start(status, response_headers)


  • yield "Hello world! "

  • 了解了如上信息後,基本上可以開始了。我們就到官方給的代碼上進行修改吧。

    STEP.3 將路徑鏈接到函數

    首先我們得把用戶請求的路徑,鏈接到函數。我們可以實現一個getPage方法,專門做這件事。我們所擁有的信息,只有environ['PATH_INFO']。

  • urls = [('^/index/$','func_index'),

  • ('^/comment/$','func_comment'),

  • ('^/environ/$','get_environ'),

  • ('^/post/$','post_test')]#urls是提供給app開發者來做鏈接的。

  • def getPage(self):

  • path = self.environ['PATH_INFO']

  • for pattern in self.urls:

  • m = re.match(pattern[0],path)#將urls元素的第0項和path進行比對,如果匹配上了,返回函數名

  • if m:

  • function = getattr(self,pattern[1])#getattr方法來得到函數

  • return function()

  • return '404 not found'#沒匹配上任何東西

  • 寫到這里之後,每次添加頁面,就只需要在urls列表中添加一個元祖就行了。

    STEP.4 獲取模版

    既然是寫web app,模版肯定是得有的。這里我提供了一種getTemplate方法來做這件事。不過我只提供了變數的替換。

  • def getTemplate(self,tem_name,rep=0):

  • #這個函數返回內容,tem_name是文件名字

  • #參數rep是一個字典,默認為0

  • f = open('template/'+tem_name)

  • html = f.read()

  • if(rep!=0):

  • for to_replace in rep:

  • strinfo = re.compile('{\%s*'+str(to_replace)+'s*\%}')

  • html = strinfo.sub(rep[to_replace],html)

  • return html

  • STEP.5 POST數據的處理

    要想獲取POST數據,我們得通過environ['wsgi.input']來處理。而他實際上就是系統的標准輸入。

  • environ['wsgi.input'] = sys.stdin

  • 知道這點後就很好寫了。

  • def getPost(self):

  • if(self.environ['REQUEST_METHOD'] == 'POST'):

  • try:

  • request_body_size = int(self.environ.get('CONTENT_LENGTH', 0))#讀出content_length的值

  • except:

  • request_body_size = 0

  • request_body = self.environ['wsgi.input'].read(request_body_size) #請求的body

  • post_data = parse_qs(request_body)#parse_qs是cgi提供的方法,幫助我們處理請求

  • return post_data

  • 資料庫的鏈接

  • import MySQLdb

  • class Model(object):

  • def __init__(self):

  • self.host = 'localhost'

  • self.port = 3306

  • self.user = 'admin'

  • self.passwd = 'admin'

  • self.db = 'xieyi'

  • def build_connect(self):

  • self.conn = MySQLdb.connect(

  • host = self.host,

  • port = self.port,

  • user = self.user,

  • passwd = self.passwd,

  • db = self.db

  • )

  • def exec_ins(self,ins):

  • cur = self.conn.cursor()

  • num = cur.execute(ins)

  • info = {}

  • if(num>0):

  • info = cur.fetchmany(num)

  • cur.close()

  • self.conn.commit()

  • return info

  • def close(self):

  • self.conn.close()

  • STEP.6 清理工作

    很多配置如果放到代碼中,會增加閱讀負擔。於是把urls,model抽取出來。
    使得配置更加方便。



熱點內容
超低溫疫苗存儲冰櫃生產廠家 發布:2024-11-25 22:32:58 瀏覽:537
x86linux 發布:2024-11-25 22:09:24 瀏覽:450
qq群怎麼設置上傳 發布:2024-11-25 22:08:37 瀏覽:16
加密戶籍 發布:2024-11-25 22:08:32 瀏覽:214
newman演算法 發布:2024-11-25 21:34:55 瀏覽:201
a演算法概念 發布:2024-11-25 21:24:16 瀏覽:588
jquery源碼書籍 發布:2024-11-25 21:19:50 瀏覽:804
銀行卡輸入密碼超限怎麼辦 發布:2024-11-25 21:09:07 瀏覽:958
編譯指令多發 發布:2024-11-25 20:58:17 瀏覽:751
java上傳文件到伺服器 發布:2024-11-25 20:52:47 瀏覽:741