上一篇文章說到了web.py初探之第一個頁面hello word,下面我們繼續深入web.py程式設計,來說一下web.py的cookie設定。
cookie相信學過web程式設計的人並不陌生,它在web程式設計中擔任著非常重要的角色。使用者登入、驗證碼、session(基於cookie)、語言選擇器、身份識別等等都會有cookie的身影。那麼怎麼樣在web.py中設定cookie呢?
其實在web.py中設定cookie非常簡單,web.py早已經為我們想到了這一點,提供了一個非常簡單有用的函式:
setcookie(name, value, expires="", domain=None, secure=False)
引數詳解:
name (string) - Cookie的名稱,由瀏覽器儲存併傳送至伺服器。
value (string) -Cookie的值,與Cookie的名稱相對應。
expires (int) - Cookie的過期時間,這是個可選引數,它決定cookie有效時間是多久。以秒為單位。它必須是一個整數,而絕不能是字串。可選引數,不寫該引數則預設永久有效。
domain (string) - Cookie的有效域-在該域內cookie才是有效的。一般情況下,要在某站點內可用,該引數值該寫做站點的域(比如.webpy.org),而不是站主的主機名(比如wiki.webpy.org),可選引數
secure (bool)- 如果為True,要求該Cookie只能透過HTTPS傳輸。可選引數
例如:
#設定website的值為www.pythontab.com,有效期60秒 web.setcookie("website", "www.pythontab.com", 60)
示例
用web.setcookie() 設定cookie,如下:
class CookieSet: def GET(self): i = web.input(age='25') web.setcookie('age', i.age, 3600) return "Age set in your cookie"
用 GET方式呼叫上面的類將設定一個名為age,預設值是25的cookie(實際上,預設值25是在web.input中賦予i.age的,從而間接賦予 cookie,而不是在setcookie函式中直接賦予cookie的)。這個cookie將在一小時後(即3600秒)過期。
web.setcookie()的第三個引數-"expires"是一個可選引數,它用來設定cookie過期的時間。如果是負數,cookie將立刻過期。如果是正數,就表示cookie的有效時間是多久,以秒為單位。如果該引數為空,cookie就永不過期。
獲得Cookies
概述
獲取Cookie的值有很多方法,它們的區別就在於找不到cookie時如何處理。
方法1(如果找不到cookie,就返回None):
透過get方法獲得
#透過設定的cookie的名字獲取cookie,例如website #web.cookies().get("website") web.cookies().get(cookieName)
方法2(如果找不到cookie,就丟擲AttributeError異常):
#先把cookie物件賦值給一個變數,然後透過cookie的名字獲得 #例如:foo.website foo = web.cookies() foo.cookieName
方法3(如果找不到cookie,可以設定預設值來避免丟擲異常):
#該方法最大的特點就是可以設定cookie的預設值 foo = web.cookies(cookieName=defaultValue) #如果不存在該cookieName,就會返回設定的預設cookie foo.cookieName
如果要確認cookie值是否存在,
可以這樣做:
class CookieGet: def GET(self): try: return "Your website name is: " + web.cookies().website except: #丟擲異常處理 return "Cookie 不存在."
或
class CookieGet: def GET(self): #先進行賦值 website = web.cookies().get('website') if age: return "Your website name is: %s" % website else: return "Cookie 不存在."