Python / Django: получить var из файлов cookie

Пытался получить distinct_id с request.COOKIES.get('distinct_id'). Однако Mixpanel сохраняет данные в недоступном для меня виде. Кто-нибудь знает, почему существуют все эти %22%3A%20%22 и как извлечь отдельный идентификатор?

print(request.COOKIES):

{
'djdt': 'hide',
'cookie_bar': '1',
'mp_1384c4d0e46aaaaad007e3d8b5d6eda_mixpanel': '%7B%22distinct_id%22%3A%20%22165edf326870-00fc0e7eb72ed3-34677908-fa000-165e40c268947b%22%2C%22%24initial_referrer%22%3A%20%22%24direct%22%2C%22%24initial_referring_domain%22%3A%20%22%24direct%22%2C%22__alias%22%3A%20%22maz%2B1024%40gmail.com%22%7D',
'csrftoken': 'nvWzsrp3t6Sivkrsyu0gejjjjjiTfc36ZfkH7U7fgHaI40EF',
'sessionid': '7bkel6r27ebd55x262cv9lzv61gzoemw'
}
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
519
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте unquote()

>>> s = '/path/to/my/handler/?action=query&id=112&type=vca&info=ch%3D0%26type%3Devent%26ev46[sts%3Dbegin'
>>> import urllib
>>> urllib.unquote(s)
>>> '/path/to/my/handler/?action=query&id=112&type=vca&info=ch=0&type=event&ev46[sts=begin'

Кредиты: https://stackoverflow.com/a/11215316/5647272

Это уже некоторый прогресс. Теперь я получаю его обратно, как прикрепленный, но это строка, и я не могу получить доступ к отличному_id, как в dict. Вы знаете, как сделать из него диктат? {"distinct_id": "165e40caaaaaaa-a-2ed3-34677908-fa000-165e40c268947b","$init‌​ial_referrer": "$direct","$initial_referring_domain": "$direct","__alias": "[email protected]"}

user9252255 16.09.2018 23:42

Вы пробовали что-то вроде decoded_data["mp_1384c4d0e46aaaaad007e3d8b5d6eda_mixpanel"][‌​"distinct_id"]?

Umair Mohammad 17.09.2018 07:26
Ответ принят как подходящий

Проверьте этот код. Вы можете запустить его, потому что используйте пример, которым вы поделились. Сначала вы должны убрать кавычки с данных в значении mixpanel. Я использовал суффикс ключа cookie, чтобы получить его. Затем после отмены цитаты вы должны загрузить json, чтобы вернуть словарь.

Код здесь печатает все ключи в словаре, но вы можете легко получить distinct_id, используя mixpanel_dict.get('distinct_id').

Попытайся.

from urllib import parse
import json

cookie = {'djdt': 'hide',
'cookie_bar': '1',
'mp_1384c4d0e46aaaaad007e3d8b5d6eda_mixpanel': '%7B%22distinct_id%22%3A%20%22165edf326870-00fc0e7eb72ed3-34677908-fa000-165e40c268947b%22%2C%22%24initial_referrer%22%3A%20%22%24direct%22%2C%22%24initial_referring_domain%22%3A%20%22%24direct%22%2C%22__alias%22%3A%20%22maz%2B1024%40gmail.com%22%7D',
'csrftoken': 'nvWzsrp3t6Sivkrsyu0gejjjjjiTfc36ZfkH7U7fgHaI40EF',
'sessionid': '7bkel6r27ebd55x262cv9lzv61gzoemw'
}


def get_value_for_mixpanel(cookie):
    mixpanel_dict = {}
    for key in cookie.keys():
        if '_mixpanel' in key:
            value = parse.unquote(cookie.get(key))
            mixpanel_dict = json.loads(value)
    return mixpanel_dict

if __name__ == "__main__":
    mixpanel_dict = get_value_for_mixpanel(cookie) # type: dict
    for key,value in mixpanel_dict.items():
        print("%s:%s" %(key, value))

Результат

distinct_id:165edf326870-00fc0e7eb72ed3-34677908-fa000-165e40c268947b
$initial_referrer:$direct
$initial_referring_domain:$direct
__alias:[email protected]

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