代码之家  ›  专栏  ›  技术社区  ›  swilliams

Django是否支持多值cookie?

  •  1
  • swilliams  · 技术社区  · 17 年前

    我想通过Django设置一个cookie,它有几个不同的值,类似于.NET HttpCookie.Values 所有物看着 documentation ,我不知道这是否可能。它看起来就像一根绳子,那么还有别的方法吗?

    我试着给它传递一个数组( [10, 20, 30] )和字典( {'name': 'Scott', 'id': 1}

    4 回复  |  直到 17 年前
        1
  •  7
  •   foxxtrot    17 年前

    .NET多值Cookie的工作方式与您在django中使用分隔符的工作方式完全相同。他们只是为你把它抽象出来。你所做的一切都是正确的,我不认为Django有任何具体的方法来“解决”这个问题。

        2
  •  1
  •   Craig McQueen    17 年前

    如果您正在寻找更抽象的内容,请尝试使用 sessions . 我相信它们的工作方式是在cookie中存储一个与数据库记录匹配的id。你可以在里面储存你想要的任何东西。它与您正在寻找的并不完全相同,但是如果您不介意少量的db开销,它可以工作。

        3
  •  1
  •   Jordan Reiter    16 年前

    这将是笨重的,但您总是使用python内置的序列化调用。

    您可以随时执行以下操作:

    import pickle
    class MultiCookie():
        def __init__(self,cookie=None,values=None):
            if cookie != None:
                try:
                    self.values = pickle.loads(cookie)
                except:
                    # assume that it used to just hold a string value
                    self.values = cookie
            elif values != None:
                self.values = values
            else:
                self.values = None
    
        def __str__(self):
            return pickle.dumps(self.values)
    

    然后,您可以获得cookie:

    newcookie = MultiCookie(cookie=request.COOKIES.get('multi'))
    values_for_cookie = newcookie.values
    

    或设置值:

    mylist = [ 1, 2, 3 ]
    newcookie = MultiCookie(values=mylist)
    request.set_cookie('multi',value=newcookie)
    
        4
  •  0
  •   ak.    17 年前