簡單而直接的Python web 框架:web.py
web.py 是一個Python 的web 框架,它簡單而且功能強大。web.py 是公開的,無論用於什麼用途都是沒有限制的。而且相當的小巧,應當歸屬於輕量級的web 框架。但這並不影響web.py 的強大,而且使用起來很簡單、很直接。在實際應用上,web.py 更多的是學術上的價值,因為你可以看到更多web 應用的底層,這在當今“抽象得很好”的web 框架上是學不到的 :) 如果想了解更多web.py,可以訪問web.py 的官方文件。
先感受一下web.py 的簡單而強大:
- import web
- urls = (
-
'/(.*)', 'hello'
- )
- app = web.application(urls, globals())
- class hello:
- def GET(self, name):
- i = web.input(times=1)
- ifnot name:
- name = 'world'
- for c in xrange(int(i.times)):
- print'Hello,', name+'!'
- return'Hello, ' + name + '!'
-
if __name__ ==
- app.run()
上面就是一個基於web.py 的完整的Web 應用。將上面的程式碼儲存為檔案code.py,在命令列下執行python
code.py。然後開啟你的瀏覽器,開啟地址:http://localhost:8080
或者 http://localhost:8080/test 沒有意外的話(當然要先安裝web.py,下面會有介紹),瀏覽器會顯示“Hello,
world”或者 “Hello, test”。
Linux 下執行
這是一個最簡單的Hello world Web 應用。是不是很簡單?!下面將較為詳細地介紹下web.py 。
1. 安裝
下載 web.py 的安裝檔案,將下載得到的檔案 web.py 解壓,進入解壓後的資料夾,在命令列下執行:python setup.py install,在Linux 等系統下,需要root 的許可權,可以執行:sudo python setup.py install。
2. URL 處理
對於一個站點來說,URL 的組織是最重要的一個部分,因為這是使用者看得到的部分,而且直接影響到站點是如何工作的,例如:www.baidu.com ,其URLs 甚至是網頁介面的一部分。而web.py 以簡單的方式就能夠構造出一個強大的URLs。
在每個web.py 應用,必須先import web 模組:
- import web
現在,我們須要告訴web.py URL 如何組織,讓我們以一個簡單例子開始:
- urls = (
- '/', 'index' )
在上面的例子中,第一部分是匹配URL的正則表示式,像/
、/help/faq
、/item/(\d+)
等(\d+
將匹配數字)。圓括號表示捕捉對應的資料以便後面使用。第二部分是接受請求的類名稱,像index
、view
、welcomes.hello
(welcomes
模組的hello
類),或者get_\1
。\1
會被正則表示式捕捉到的內容替換,剩下來捕捉的的內容將被傳遞到你的函式中去。(‘index’)是一個類名,匹配的請求將會被髮送過去。這行表示我們要URL/(首頁)被一個叫index的類處理。
現在我們需要建立一個列舉這些 url 的 application。
- app = web.application(urls, globals())
GET 和 POST : 區別
現在,我們需要編寫index 類。當大部人瀏覽網頁的時候,他們都沒有注意到,瀏覽器是通過HTTP 跟World Wide Web 通訊的。通訊的細節不太重要,但要明白一點,使用者是通過URLs(例如 / 或者 /foo?f=1)來請求web 伺服器完成一定請求的(例如 GET 或者POST)。
GET 是最普遍的方法,用來請求一個頁面。當我們在瀏覽器裡輸入“harvard.edu” 的時候,實際上它是向Web 伺服器請求GET ”/“。另一個常見的方法是POST,常用於提交特定型別的表單,比如請求買什麼東西。每當提交一個去做什麼事情(像使用信用卡處理一筆交易)的請求時,你可以使用POST。這是關鍵,因為GET的URL可以明文傳輸提交的引數。如果提交的是一些重要的敏感資訊,例如使用者名稱,密碼,則可能被別人抓包獲取到。而 POST 則不會在 URL 上傳輸 提交的資訊,POST 是通過表單提交資訊。
在我們的web.py 程式碼中。我們清晰區分這兩種方法:
- class index:
- def GET(self):
- print"Hello, world!"
當接收到一個GET 請求時,上面的GET 方法將會被web.py 呼叫。好的。現在,我們只需新增最後一行程式碼,讓web.py 啟動網頁應用:
- if __name__ == "__main__":
- app.run()
上面告訴web.py 如何配置URLs,以及找尋的類在檔案中的全域性名稱空間。然後為我們啟動上面的應用。
整個 code.py 檔案的內容如下:
- import web
- urls = (
- '/(.*)', 'hello'
- )
- app = web.application(urls, globals())
- class hello:
- def GET(self, name):
- i = web.input(times=1)
- ifnot name:
- name = 'world'
- for c in xrange(int(i.times)):
- print'Hello,', name+'!'
- return'Hello, ' + name + '!'
- if __name__ == "__main__":
- app.run()
實際上web 應用的程式碼就只得上面的幾行,而且這是一個完整的web.py 應用。
3.啟動服務
在你的命令列下輸入:
- $ python code.py # 使用預設埠 8080
- 或者
- $ python code.py 10000# 改變埠為 10000
你的web.py 應用已經啟動了伺服器。通過瀏覽器訪問:http://localhost:8080/ ,會見到”Hello, world!“。
修改預設埠
在啟動伺服器的時候,如果你不想使用預設埠,你可以使用這樣的命令來指定埠號: python code.py 8888。
4. 除錯
直接新增一行 web.internalerror = web.debugerror 即可。如下
- if __name__=="__main__":
- web.internalerror = web.debugerror
- app.run()
5. 模板
在Python 裡面編寫HTML 程式碼是相當累贅的,而在HTML 裡嵌入Python 程式碼則有趣得多。幸運地,web.py 使這過程變得相當容易。
注意:舊版本的web.py 是用Cheetah templates 模板的,你可以繼續使用,但官方已不再提供支援。
新建一個 code.py 的 python檔案。內容如下:
- import web
- urls = (
- # '/(.*)', 'hello',
- '/hello_1[/]?.*', 'hello_1',
- '/hello_2/(.*)', 'hello_2',
- )
- app = web.application(urls, globals())
- render=web.template.render('templates')
- class hello_1:
- def GET(self):
- return render.index_1()
- class hello_2:
- def GET(self, name):
- return render.index_2("Lisa")
- if __name__ == "__main__":
- app.run()
建立模板
這裡,我們先在專案 code.py 同一級目錄中新建一個目錄(例如 templates )集中存放並用來組織模板檔案,便於管理。然後在templates下新建HTML 檔案(例如:”index.html“)。這裡新建 兩個 HTML 檔案。 index_1.html 和 index_2.html
淺談Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid
地方 def jinja follow 技術選擇 trac oschina pyramid dash Django Django 是一個高級的 Python Web 框架,支持快速開發,簡潔、實用的設計。如果你正在建一個和電子商務網站相似的應用,那你應
使用Python-Flask框架開發Web網站系列課程(四)構建前端
前言 使用IDE:PyCharm 作業系統:Mac Python的版本:3.6 我的郵箱:[email protected] 交流群:372430835 說明: 本次課程的GitHub程式碼在最下面。 本次課程基於上個課程的程式碼,如果沒看過的請先傳
3 web框架 3 web框架
3 web框架 web框架 Web框架(Web framework)是一種開發框架,用來支援動態網站、網路應用和網路服務的開發。這大多數的web框架提供了一套開發和部署網站的方式,也為web行為提供了
Python爬蟲框架:Scrapy 爬取伯樂線上實戰
專案介紹 使用Scrapy框架進行爬取伯樂線上的所有技術文章 所用知識點 Scrapy專案的建立 Scrapy框架Shell命令的使用 Scrapy自帶的圖片下載管道 Scrapy自定義圖片下載管道(繼承自帶的管道) Scrapy框架ItemLoader
Python黑科技:FuckIt.py
說起 Python 強大的地方,你可能想到是它的優雅、簡潔、開發速度快,社群活躍度高。但真正使得這門語言經久不衰的一個重要原因是它的無所不能,因為社群有各種各樣的第三庫,使得我們用Python實現一個東西實在是太簡單了,你經常會看到幾行程式碼實現爬蟲,10行程式碼實現人臉識別
Python開發【第十四篇】:Web框架本質
中一 用戶 contain get pattern app sta doc connect Web框架本質 眾所周知,對於所有的Web應用,本質上其實就是一個socket服務端,用戶的瀏覽器其實就是一個socket客戶端。 1 2 3 4 5 6 7 8 9
Python簡單Web框架web.py實例hello world
brush main 安裝 self name globals bject pytho log 1、安裝web.py模塊easy_install web.py 2、實現代碼 import web urls = (‘/hello‘, ‘hello‘, )
編寫python web框架(一):簡介
== web 方法 nvi ever pytho 必須 ext sim 編寫一個最簡單的應用: def app(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘tex
Python Web框架篇:Django Form組件
multipart ima class mage 決定 red ttr 提示 echo Form簡介 在HTTP中,表單(form標簽),是用來提交數據的,其action屬性說明了其傳輸數據的方法:如何傳、如何接收。 訪問網站時,表單可以實現客戶端與服務器之間的通信。例如查
python web框架篇:views視圖函數
則表達式 定義 string 給定 語言 lan 模板引擎 rem nag Django請求的生命周期是怎樣的? 簡單地說,通過URL對應關系匹配 ->找到對應的函數(或者類)->返回字符串(或者讀取Html之後返回渲染的字符串) 解剖起來如下: 1. 當用戶在
寫一個Python通過select實現的最簡單的web框架
127.0.0.1 log put lec func select odi block pos 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import socket 5 import selec
python web框架之Tornado的簡單使用
繼承 學習 簡單使用 star 接下來 django 就是 HR dem python web框架有很多,比如常用的有django,flask等。今天主要介紹Tornado ,Tornado是一個用Python寫的相對簡單的、不設障礙的Web服務器架構,用以處理
Python開發【第二十一篇】:Web框架之Django【基礎】
name line 控制 creat js等 nec serve pan xiaohua 一、 Django簡介 1.web框架簡介 具體介紹Django之前,必須先介紹WEB框架等概念。 web框架: 別人已經設定好的一個web網站模板,你學習它的規則,然後“填空”或“修
Python三大web框架簡單介紹
Django 是重量級框架:它封裝的的功能常豐富非常多所以它是重量級,Django的文件最完善、市場佔有率最高、招聘職位最多。Django提供全套的解決方案(full-stack framework + batteries included),基本要什麼有什麼(比如:cache、session、feed、or
Python web入門:Django學習與實踐二(簡單頁面實現和建立一個模板)
一、第一個頁面實現(“hello world”) 實現步驟: 1.在views.py檔案中建立一個處理函式(引數名可以隨意,但是最好使用request,看起來清楚明瞭) def index(request):