无法在 Django 中检索 JavaScript cookie 值

标签 javascript python django cookies

我正在尝试使用 Django 框架构建一个英语和保加利亚语网站。我的想法是用户应该点击一个按钮,页面将重新加载并且语言将被更改。这就是我正在尝试的方式:

在我的 html 中我有一个按钮标签 <button id='btn' onclick="changeLanguage();" type="button"> ... </button>

cookies.js 的摘录:

function changeLanguage() {
    if (getCookie('language') == 'EN') {
        document.getElementById('btn').innerHTML = getCookie('language');
        setCookie("language", 'BG');
    } else {
        document.getElementById('btn').innerHTML = getCookie('language');
        setCookie("language", 'EN');
    }
}

function setCookie(sName, sValue, oExpires, sPath, sDomain, bSecure) {
    var sCookie = sName + "=" + encodeURIComponent(sValue);
    if (oExpires) {
        sCookie += "; expires=" + oExpires.toGMTString();
    }
    if (sPath) {
        sCookie += "; path=" + sPath;
    }
    if (sDomain) {
        sCookie += "; domain=" + sDomain;
    }
    if (bSecure) {
        sCookie += "; secure";
    }
    document.cookie = sCookie;
}

在我的 views.py 文件中就是这种情况

@base
def index(request):
    if request.session['language'] == 'EN':
        return """<b>%s</b>""" % "Home" 
    else request.session['language'] == 'BG':
        return """<b>%s</b>""" % "Начало"

所以我知道我的 JS 更改了语言 cookie 的值,但我认为 Django 不明白这一点。另一方面,当我再次在我的 Python 代码中设置和获取 cookie 时,cookie 已设置。我的问题是是否有办法让 JS 和 Django 一起工作——JavaScript 设置 cookie 值,而 Python 只在被询问时读取它并采取适当的行动?

谢谢。

最佳答案

session 不同于cookie。

session 是一个内部 Django 数据库表,其键存储在 cookie 中。然而,除了 key 之外的其余数据都存储在数据库中。

如果您想访问客户端设置的实际 cookie,您需要使用 request.COOKIES 字典:

if request.COOKIES['language'] == 'EN':
    return """<b>%s</b>""" % "Home" 

关于无法在 Django 中检索 JavaScript cookie 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931324/

相关文章:

javascript - 使用 jQuery 获取输入值。可以用,但是确认错误

python - 这段 python 代码中的语法是否正确?

python - 在 CSV 文件/Pandas Dataframe 中查找标题行的行号

python - 防止 MySQL-Python 在数据库名称参数周围插入引号

python - 带有查询参数的 Django next

javascript - Bootstrap Nav 折叠禁用

javascript - Dart2Js 但可读

jquery - 如何使用 django-crispy-forms 实现引导模式表单,无需页面刷新

javascript - 使用 getusermedia 显示 html 视频

python - 在 python __del__ 处理过程中,基类在子类之前被删除