【发布时间】:2020-09-25 21:10:07
【问题描述】:
我一直在使用 cookie。所以观看了文档和一些博客,并像下面一样对 cookie 进行编码-->
def ProouctDetailView(request, slug):
item = Item.objects.get(slug=slug)
response = render(request, 'product.html', {'item' : item } )
temp = request.COOKIES.get('pro', None)
response.set_cookie('pro','{0} {1}'.format(temp, slug))
return response
我在这里拿饼干。由于 django 不提供在单个 cookie 中设置多个值,我将所有值作为一个字符串(由空格分隔)并使用 split() 方法将它们拆分。然后我过滤为最近查看的部分生成查询集
def HomeListView(request):
items = Item.objects.all()
recent = None
try:
slug = request.COOKIES.get('pro').split(" ")
recent = Item.objects.filter(slug__in= slug)
except:
pass
return render(request, 'home.html', {'items': items, 'recent':recent})
从 cookie 中,我得到的是 items 对象的 slug,以便稍后我可以在最近查看的部分中显示它们,因为我没有在 set_cookie() 方法中提供任何 max_age 字段,它将设置为 none,这意味着当用户关闭浏览器会话时cookie会自动过期,意味着关闭浏览器,对吧?
但是,即使我关闭 chrome 并重新启动 chrome,最近查看的部分也不会过期。它还在那里。所以 cookie 在 chrome 中没有过期。但是如果我使用 firefox,那么当我重新启动 firefox 时 cookie 就会过期。
【问题讨论】:
标签: python django cookies session-cookies