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

  1. 迭代器iterator

    為類序列對象提供了類序列的介面,也就是說類序列對象可以通過迭代器像序列一樣進行迭代。

  2. __call__

    在類定義的時候實現了__call__方法,那麼該類的對象就是可調有的,即可以將對象當做函數來使用。

  3. WSGI

    用可調用的對象實現的:一個函數,一個方法或者一個可調用的實例。

  4. ㈢ 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被傳入了兩個值。

    • 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抽取出來。
      使得配置更加方便。



    ㈨ 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 這樣的微內核框架。