解码Django会话cookie值

use*_*295 2 python django cookies

我正在通过JavaScript这样设置会话cookie :

$('.content li a').on('click', function(e) {
        $.cookie.json = true;
        var cookie_value = {postid: 1234, commentid: 8999};
        $.cookie('my_cookie_key', cookie_value, {path: '/'});
    });
Run Code Online (Sandbox Code Playgroud)

当我尝试在Python Django中检索cookie值时,我得到一个这样的编码字符串: '"%7B%22postid%22%3A1234%2C%22commentid%22%3A8999%7D"'

运用 request.COOKIES.get('my_cookie_key')

如何将其转换为dict对象,以便我可以轻松检索cookie中的所有值my_cookie_obj.postid?我试过解码字符串,但我不认为我做得对.

met*_*ter 5

该值只是百分比编码.只需使用适当的解码功能,您就应该收回存储的内容.

>>> import json
>>> from urllib.parse import unquote
>>> s = unquote("%7B%22postid%22%3A1234%2C%22commentid%22%3A8999%7D")
>>> s
'{"postid":1234,"commentid":8999}'
>>> v = json.loads(s)
>>> v['commentid']
8999
Run Code Online (Sandbox Code Playgroud)

请注意,用户可以操作所有cookie值,因此在解析/使用值时要小心,因为它们是不受信任的内容.