Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript cookie值可以';无法在Django检索_Javascript_Python_Django_Cookies - Fatal编程技术网

JavaScript cookie值可以';无法在Django检索

JavaScript cookie值可以';无法在Django检索,javascript,python,django,cookies,Javascript,Python,Django,Cookies,我正在尝试使用Django框架用英语和保加利亚语建立一个网站。我的想法是用户应该点击一个按钮,页面会重新加载,语言也会改变。这就是我试图做到的: 在我的html中,我有一个按钮标签 摘自cookies.js: function changeLanguage() { if (getCookie('language') == 'EN') { document.getElementById('btn').innerHTML = getCookie('language');

我正在尝试使用Django框架用英语和保加利亚语建立一个网站。我的想法是用户应该点击一个按钮,页面会重新加载,语言也会改变。这就是我试图做到的:

在我的html中,我有一个按钮标签

摘自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;
}
在my 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>""" % "Начало"
@base
def索引(请求):
if request.session['language']=“EN”:
返回“”%s“”%Home”
else请求。会话['language']=='BG':
返回“%s”“%”
所以我知道我的JS改变了语言cookie的值,但我认为Django不明白这一点。另一方面,当我再次在Python代码中设置并获取cookie时,cookie被设置。我的问题是,是否有一种方法可以让JS和Django一起工作——JavaScript设置cookie值,Python只在被要求时读取cookie值并采取适当的措施


谢谢。

会话与cookie不同

会话是一个内部Django数据库表,其密钥存储在cookie中。但是,除密钥外的其余数据存储在数据库中

如果要访问客户端设置的实际cookie,需要使用
请求。cookie
字典:

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

非常感谢:)。这正是我所需要的,也是一个及时的答复。另外,我问了我的室友那个问题,几乎肯定他不会有答案,但他向我解释了。我已经发布了这个问题,所以他急忙跑到他的电脑前回答这个问题,以获得支持:D。但你只用了一秒钟就击败了他:D。使用
cookies
是否比使用Django的contrib中间件和会话组合更不安全?我发现Cookie更容易掌握和理解,我觉得通过存储在内部数据库中,并根据传入的请求验证它们,我对用户身份验证有了更细粒度的控制。。。