视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
web.pycookie使用之cookie设置与获取
2020-11-27 14:28:41 责编:小采
文档

上一篇文章说到了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 不存在."

下载本文
显示全文
专题