jQuery-如何在Django / Wagtail中检索cookie以设置Python变量

我正在建立一个网站,该网站将根据用户来自哪个省份而具有一些不同的内容.我设置了一个使用jQuery / Bootstrap的模式窗口,当用户未设置Cookie时,该窗口会在用户登陆网站时弹出:

base.html


  $(document).ready(function() {
    if (Cookies.get('province') == null) {
     $('#provinceModal').modal('show');
    }

    $('button#ontario').click(function() {
        Cookies.set('province', 'ontario');
        $('#provinceModal').modal('hide');
    });
    $('button#alberta').click(function() {
        Cookies.set('province', 'alberta');
        $('#provinceModal').modal('hide');
    });
    $('button#quebec').click(function() {
        Cookies.set('province', 'quebec');
        $('#provinceModal').modal('hide');
    });
  });

cookie的设置正确,因为单击其中一个按钮后,我可以在浏览器中看到它们.我遇到的问题是使用Python检索cookie.我想保存省份变量,然后使用if语句显示某些内容(取决于省份等于什么).

我已经尝试过了,并且能够将cookie打印到控制台:

cookies.py

import Cookie
import os
import requests


def get_cookies():
    s = requests.session()
    r = s.get("http://www.twitter.com")

    cookie =  r.cookies['_twitter_sess']

    return cookie

如何将此值传递给Python中要在模板中使用的变量?我不确定下一步该怎么做.我想念什么?

最佳答案

您使用的是Python Cookie模块,而不是HttpRequest对象设置的django,为detailed in this answer.(现在已过期,请继续阅读!)

在您正在处理该JQuery弹出窗口的后端的视图中(大概是您将其发送到Django中的端点,并且该代码是视图中的摘录),您想使用
request.session文档来检查和设置cookie的状态.

例如,在Django视图中,它看起来像这样:

def a_standard_view(request):
    print request.session

您可以通过使用(再次,这是我最初链接的部分中)来检查cookie设置是否运行良好:

从django.http导入HttpResponse
从django.shortcuts导入渲染

def faux_login(request):
    if request.method == 'POST':
        if request.session.test_cookie_worked():
            request.session.delete_test_cookie()
            return HttpResponse("You're logged in.")
        else:
            return HttpResponse("Please enable cookies and try again.")
    request.session.set_test_cookie()
    return render(request, 'foo/login_form.html') 

在您的特定实例中,您将需要一个处理jquery的终结点(例如/ ajax / province /或类似的终结点).您的Jquery需要使用get call to hit that endpoint以及您要存储在会话数据中的任何详细信息.