Pregunta

Me gustaría configurar una cookie a través de Django que tenga varios valores diferentes, similar a la de .NET. HttpCookie.Valores propiedad.Mirando a la documentación, No puedo decir si esto es posible.Parece que solo se necesita una cuerda, ¿hay otra manera?

Intenté pasarle una matriz ([10, 20, 30]) y diccionario ({'name': 'Scott', 'id': 1}) pero simplemente se convierten a su formato de cadena.Mi solución actual es simplemente usar un separador arbitrario y luego analizarlo al leerlo, lo cual resulta desagradable.Si los valores múltiples no son posibles, ¿existe una mejor manera?Prefiero no utilizar muchas cookies, porque resultaría molesto.

¿Fue útil?

Solución

Las cookies de valores múltiples de .NET funcionan exactamente de la misma manera que lo que haces en Django usando un separador.Simplemente te lo han abstraído.Lo que estás haciendo está bien y es apropiado, y no creo que Django tenga nada específico para "resolver" este problema.

Diré que estás haciendo lo correcto al no utilizar múltiples cookies.Mantenga baja la sobrecarga del cable haciendo lo que está haciendo.

Otros consejos

Si buscas algo un poco más abstracto, intenta usar sesiones.Creo que la forma en que funcionan es almacenando una identificación en la cookie que coincide con un registro de la base de datos.Puedes guardar lo que quieras en él.No es exactamente lo mismo que estás buscando, pero podría funcionar si no te importa una pequeña cantidad de sobrecarga de db.

(¡Respuesta tardía!)

Esto será más voluminoso, pero siempre debe usar la serialización integrada de Python.

Siempre puedes hacer 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)

Luego, puedes obtener la cookie:

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

O establezca los valores:

mylist = [ 1, 2, 3 ]
newcookie = MultiCookie(values=mylist)
request.set_cookie('multi',value=newcookie)

Django no lo admite.La mejor manera sería separar los valores con un separador arbitrario y luego simplemente dividir la cadena, como ya dijiste.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top