O Django suporta cookies multi-valor?

votos
1

Eu gostaria de definir um cookie via Django com que tem vários valores diferentes para ele, semelhante à do .NET HttpCookie.Values propriedade. Olhando para o documentação , não posso dizer se isso é possível. Parece que ele só tem uma corda, por isso existe outra maneira?

Eu tentei passá-lo um array ( [10, 20, 30]) e dicionário ( {'name': 'Scott', 'id': 1}), mas eles só são convertidos ao seu formato string. Minha solução atual é usar apenas um separador arbitrária e, em seguida, analisá-lo quando lê-lo em, que se sente icky. Se vários valores não são possíveis, há uma maneira melhor? Eu prefiro não usar muita cookies, porque isso iria ficar chato.

Publicado 24/09/2008 em 19:09
fonte usuário
Em outras línguas...                            


4 respostas

votos
6

.NETs biscoitos multi-valor funcionam exatamente da mesma forma que o que você está fazendo em Django usando um separador. Eles acabaram abstraída que longe para você. O que você está fazendo é bom e apropriado, e eu não acho que o Django tem nada específico para 'resolver' este problema.

Posso dizer que você está fazendo a coisa certa, em não usar vários cookies. Mantenha a sobrecarga over-the-wire para baixo, fazendo o que você está fazendo.

Respondeu 24/09/2008 em 19:35
fonte usuário

votos
1

(Resposta atrasada!)

Este será mais volumoso, mas você chama sempre usar python é construído em serialização.

Você sempre pode fazer algo como:

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)

Em seguida, você pode obter o cookie:

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

Ou definir os valores:

mylist = [ 1, 2, 3 ]
newcookie = MultiCookie(values=mylist)
request.set_cookie('multi',value=newcookie)
Respondeu 05/03/2010 em 00:24
fonte usuário

votos
1

Se você está procurando algo um pouco mais abstrata, tente usar sessões . Eu acredito que a forma como eles trabalham é armazenando uma identificação no cookie que corresponde a um registro de banco de dados. Você pode armazenar o que quiser nele. Não é exatamente o mesmo que o que você está procurando, mas poderia funcionar se você não se importa uma pequena quantidade de sobrecarga db.

Respondeu 25/09/2008 em 02:44
fonte usuário

votos
0

O Django não apoiá-lo. A melhor forma seria a de separar os valores com separador arbitrária e em seguida, basta dividir a string, como você já disse.

Respondeu 24/09/2008 em 22:03
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more