web.py cookie使用之cookie設定與擷取

來源:互聯網
上載者:User
上一篇文章說到了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.websitefoo = web.cookies()foo.cookieName


方法3(如果找不到cookie,可以設定預設值來避免拋出異常):

#該方法最大的特點就是可以設定cookie的預設值foo = web.cookies(cookieName=defaultValue)#如果不存在該cookieName,就會返回設定的預設cookiefoo.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 不存在."
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.