Поддерживает ли Django многозначные файлы cookie?

Я хотел бы установить cookie через Django с несколькими разными значениями, аналогичными свойству HttpCookie.Values .NET. Глядя на документация, я не могу сказать, возможно ли это. Похоже, он просто берет строку, есть ли другой способ?

Я пробовал передать ему массив ([10, 20, 30]) и словарь ({'name': 'Scott', 'id': 1}), но они просто преобразуются в свой строковый формат. Мое текущее решение - просто использовать произвольный разделитель, а затем анализировать его при чтении, что кажется неприятным. Если мульти-значения невозможны, есть ли лучший способ? Я бы предпочел не использовать много файлов cookie, потому что это меня раздражает.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
2 529
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Многозначные файлы cookie .NET работают точно так же, как и то, что вы делаете в django, используя разделитель. Они просто абстрагировали это для вас. То, что вы делаете, хорошо и правильно, и я не думаю, что у Django есть что-то особенное, чтобы «решить» эту проблему.

Я скажу, что вы поступаете правильно, не используя несколько файлов cookie. Делая то, что вы делаете, не допускайте лишних накладных расходов.

Django его не поддерживает. Лучшим способом было бы разделить значения произвольным разделителем, а затем просто разделить строку, как вы уже сказали.

Если вы ищете что-то более абстрактное, попробуйте использовать сессии. Я считаю, что они работают, сохраняя идентификатор в файле cookie, который соответствует записи в базе данных. Вы можете хранить в нем все, что захотите. Это не совсем то, что вы ищете, но это может сработать, если вы не возражаете против небольшого количества накладных расходов в db.

(Поздний ответ!)

Это будет более громоздко, но вы всегда вызываете 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)

Другие вопросы по теме