django1.6的新手
我想在基于类的通用视图(Listview)中设置cookie
models.py
class Designation(Models.model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=10000, blank=True)
views.py
class DesignationList(ListVew):
def get_queryset(self):
"""
will get 'sort_by' parameter from request,
based on that objects list is return to template
"""
col_nm = self.request.GET.get('sort_by', None)
if col_nm:
if cookie['sort_on'] == col_nm:
objects=Designation.objects.all().order_by(col_nm).reverse()
else:
cookie['sort_on'] = col_nm
objects=Designation.objects.all().order_by(col_nm)
else:
objects = Designation.objects.all().order_by('title')
//set cookie['sort_on']='title'
return objects
模板 在模板中迭代对象
所以最初的对象显示在sort_by“title”desc中。 “这个值是我想在cookie中设置的。”
在模板中,如果用户点击标题,它将检入cookie 饼干[ '的sort_on'] = '标题' 然后所有对象都按升序排列
如果用户点击描述,则替换cookie值 cookie ['sort_on'] ='描述',对象按顺序排列..
soo,如何设置我可以在整个ListView类中使用的cookie ..?
Thnx提前..
答案 0 :(得分:6)
要设置/删除Cookie,您必须能够访问"响应"宾语。为此,在基于类的视图中,您可以覆盖" render_to_response"。
示例:
x
答案 1 :(得分:2)
除非你有充分的理由,否则你不应该使用cookie,而应该使用session framework。您可以使用self.request.session
访问方法内的内容,它就像字典一样。
if col_nm:
if self.request.session.get('sort_on') == col_nm:
objects=Designation.objects.all().order_by(col_nm).reverse()
else:
self.request.session['sort_on'] = col_nm
objects=Designation.objects.all().order_by(col_nm)
等