python開發web框架
㈠ 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 的性能據說也好。
㈡ 如何開發一個Python web框架
預備知識
web框架主要是實現web伺服器和web應用之間的交互。底層的網路協議主要有web伺服器完成。譬如監聽埠,填充報文等等。
Python內建函數__iter__和__call__和WSGI
迭代器iterator
為類序列對象提供了類序列的介面,也就是說類序列對象可以通過迭代器像序列一樣進行迭代。
__call__
在類定義的時候實現了__call__方法,那麼該類的對象就是可調有的,即可以將對象當做函數來使用。
WSGI
用可調用的對象實現的:一個函數,一個方法或者一個可調用的實例。
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! "
- 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'#沒匹配上任何東西
- 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
- 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()
㈢ python 大牛 用什麼web框架
Pyramid, Django, 和 Flask都是優秀的框架,為項目選擇其中的哪一個都是傷腦筋的事。我們將會用三種框架實現相同功能的應用來更容易的對比三者。也可以直接跳到框架實戰
簡介
Flask是一個面向簡單需求小型應用的「微框架(microframework)」。Pyramid和Django都是面向大型應用的,但是有不同的拓展性和靈活性。Pyramid的目的是更靈活,能夠讓開發者為項目選擇合適的工具。這意味著開發者能夠選擇資料庫、URL結構、模板類型等等。Django目的是囊括web應用的所有內容,所以開發者只需要打開箱子開始工作,將Django的模塊拉進箱子中。
Django包括一個開箱即用的 ORM ,而Pyramid和 Flask讓開發者自己選擇如何或者是否存儲他們的數據。到目前為止對於非Django的web應用來說最流行的ORM是SQLAlchemy,同時還有多種其他選擇,從 DynamoDB和MongoDB 到簡單本地存儲的LevelDB 或朴實的SQLite。Pyramid被設計為可使用任何數據持久層,甚至是還沒有開發出來的。
關於框架
Django已經內建了模板、表單、路由、認證、基本資料庫管理等等。比較起來,Pyramid包括路由和認證,但是模板和資料庫管理需要額外的庫。
Flask歷史相對更短,但它能夠學習之前出現的框架並且把注意力放在了微小項目上。它大多數情況被使用在一些只有一兩個功能的小型項目上。例如 httpbin,一個簡單的(但很強大的)調試和測試HTTP庫的項目。
Flask
Flask的hello world應用非常的簡單,僅僅單個Python文件的7行代碼就夠了。
Django
Django 也有自己的 bootstrap 工具, 內置在 django-admin 中.
Django 默認只在項目中創建 空白的 model 和模板文件, 供新手參考的示範代碼不多
模板
1、Django
㈣ 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 的性能據說也好。
㈤ python web開發 該用什麼框架
Python是最受歡迎的和最有效率的開發語言之一.Python能讓你更快完成工作,並且更有效地集成系統.Python是動態的面向對象的語言.即便你剛剛開始學習Python,也立即就能獲得生產力上的提升,並且代碼的維護成本很低.它有很多其他語言沒有的特性,並且它要求開發者編寫易讀的代碼.相比於其他語言,Python讓軟體設計者能夠使用更少的代碼實現自己的意圖.在這篇文章中,我們將介紹5種Python領域頂尖的Web開發框架.
1.Django
Django是以快速開發和結構整潔著稱的高層框架.這個開源免費的框架完全由Python編寫並且遵循MVC的模型.它由經驗豐富的大牛編寫,幫你解決了Web開發中大多數的難點,讓你能夠專注於業務邏輯,而不用重復造輪子.
2.CherryPy
使用CherryPy最好的理由就是它兼容Python,它的Python介面非常Pythonic,讓Python開發者不會感到突兀.
CherryPy是HTTP協議的一個封裝,這樣其他軟體可以使用它來處理HTTP協議的細節.它是一個低層的框架,它只提供 RFC 2616 定義的功能.
3.Flask
Flask適合開發輕量級的Web應用,新手程序員會發現它缺乏一些必要的功能,如表單驗證和資料庫抽象層.它使用第三方庫來完成這些工作.然而,它的結構適於擴展,所以你可以比較容易地為它添加必要的功能.它基於WerkzeugWSGI工具箱和jinja模板,它使用BSD許可證.
4.Pyramid
Pyramid以執行效率和快速開發的能力著稱.這個框架最有優勢的地方是,它包含了一些Python/Perl/Ruby獨有的特性.這個開源框架擁有不依賴平台的MVC架構,和最快的啟動開發的能力.
5.TurboGear
TurboGear是建立在其他框架基礎上的框架,它把其他框架優秀的部分集成到一起.由於每個框架都有一些部分做得不好,TurboGear試圖解決這個問題.它允許你從一個單文件服務開始,逐步擴展為一個全棧服務.
㈥ python的web開發一般使用什麼框架
django是目前最火的一個,大而全,學習周期稍微長,
tornado是一個輕量級的,代碼很少,版最大的優點是非阻權塞,處理並發。
個人推薦tornado,感覺django的很多東西沒有必要,比如它orm,如果注重效率,還是tornado吧。
㈦ python web開發用哪個框架比較好
(1)Django。Django的文檔最完善、市場佔有率最高、招聘職位最多估計大家都沒什麼意見。完美的文檔,Django的成功,我覺得很大一部分原因要歸功於Django近乎完美的官方文檔(包括Django book)。全套的解決方案,Django象Rails一樣,提供全套的解決方案(full-stack framework + batteries included),基本要什麼有什麼(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,開發網 站應手的工具Django基本都給你做好了,因此開發效率是不用說的,出了問題也算好找,不在你的代碼里就在Django的源碼里。
(2)Pylons和Django的設計理念完全不同,Pylons本身只有兩千行左右的Python代碼,不過它還附帶有一些幾乎就是Pylons御用 的第三方模塊。Pylons只提供一個架子和可選方案,你可以根據自己的喜好自由的選擇Template、ORM、form、auth等組件,系統高度可 定製。我們常說Python是一個膠水語言(glue language),那麼我們完全可以說Pylons就是一個用膠水語言設計的膠水框架。
(3)Tornado即是一個Web server(對此本文不作詳述),同時又是一個類web.py的micro-framework,作為框架Tornado的思想主要來源於Web.py,大家在Web.py的網站首頁也可以看到Tornado的大佬Bret Taylor的這么一段話(他這里說的FriendFeed用的框架跟Tornado可以看作是一個東西):
(4)Bottle和Flask作為新生一代Python框架的代表,挺有意思的是都採用了decorator的方式配置URL路由。
(5)Flask 精簡
(6)web.py 非常精簡
㈧ 如何用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被傳入了兩個值。
了解了如上信息後,基本上可以開始了。我們就到官方給的代碼上進行修改吧。
STEP.3 將路徑鏈接到函數
首先我們得把用戶請求的路徑,鏈接到函數。我們可以實現一個getPage方法,專門做這件事。我們所擁有的信息,只有environ['PATH_INFO']。
寫到這里之後,每次添加頁面,就只需要在urls列表中添加一個元祖就行了。
STEP.4 獲取模版
既然是寫web app,模版肯定是得有的。這里我提供了一種getTemplate方法來做這件事。不過我只提供了變數的替換。
STEP.5 POST數據的處理
要想獲取POST數據,我們得通過environ['wsgi.input']來處理。而他實際上就是系統的標准輸入。
知道這點後就很好寫了。
資料庫的鏈接
STEP.6 清理工作
很多配置如果放到代碼中,會增加閱讀負擔。於是把urls,model抽取出來。
使得配置更加方便。
㈨ Python web 開發一定要用框架嗎
Python web 開發不一定要用框架
因為Python Web框架也是Python開發出來的。只是為了減少重復造輪子,降低開發門檻。
1、Python 的 Web 並不作為語言的一部分實現。因為通用語言的設計目標,Python 通過 C extension 形式的標准庫,有原生的網路編程支持。也就是說,任何人都可以用 Python 的 socket 介面自己編寫 Web 伺服器。由於圖靈機的等價性,用 Python 實現一個 PHP VM 也是技術可行的。
2、但是絕大多數人用 Python 做 Web 開發的時候不會選擇自己用 socket 去實現一個伺服器,因為 Python 官方有 Web 設計的標准—— WSGI (PEP 333 python.org/dev/peps...)。WSGI 定義的標准將 Web 應用劃分為 WSGI Application 和 WSGI Server。後者類似 PHP 的 Web 運行時,提供對標准輸入輸出流的封裝,前者則類似自己寫的 PHP 應用,在封裝後的環境中對具體應用進行 Web 開發。強烈建議閱讀一下 PEP 333,對於理解 WSGI 的這種劃分很有幫助。
3、目前為止,WSGI 在主流 Python 應用中得到廣泛支持,所謂的 Python Web 框架,其實都是符合 WSGI Application 規范下,對Web開發中環境進行的封裝,如果有精力,閱讀一下 Bottle 框架的源碼,就會非常有收獲——只有一個文件,但是完整實現 WSGI 並封裝為自己風格的一個環境(一個 Bottle 的實例就是一個 WSGI Application,實現了 __call__ 方法)。像 Django 這種框架已經逾越了Web框架范圍的了,將 ORM、表單驗證等等聚集成一塊,有點像 RoR 的感覺。真正和 PHP 的 Web 環境等價的,是類似 Bottle 這樣的微內核框架。