Django request.session не работает должным образом

Я создаю веб-приложение и использую ajax для отправки данных из frontend в backend, чтобы я мог обрабатывать формы и сохранять их в базе данных. Я отправляю данные из ajax в метод get-data и оттуда сохраняю их в сессию, но когда я захожу на страницу /success и пытаюсь получить те же данные из сессии, она сообщает мне, что ключ не существует. Как такое возможно? Вот код, приведенный ниже.

$.ajax({
      type: "POST",
      url: "/get-data/",
      data: JSON.stringify(obj),
      dataType: "text",
      headers: { "X-CSRFToken": getCookie("csrftoken") },
      success: function (response) {
        console.log("success"); // i get this, so i it means that the ajax works properly.
      },
      error: function (response, err, err2) {
        console.log(err2);
      },
    });
def get_data(request):
    if request.method == "POST":
        if is_ajax(request):
            rec_data = json.loads(request.body)
            print("the request came")
            request.session["data_check_form"] = rec_data
            print("everything set")
            print(request.session["data_check_form"])  # i print this and i get the json file properly
            return JsonResponse({"success": "200"})
def success_view(request):
    print("test")
    data = request.session.get("data_check_form", False) 
    print(data) # i get false
    ...

Используйте request.session.modified = True после любых изменений в session как

def get_data(request):
    if request.method == "POST":
        if is_ajax(request):
            rec_data = json.loads(request.body)
            print("the request came")
            request.session["data_check_form"] = rec_data
            request.session.modified = True
            print("everything set")
            print(request.session["data_check_form"])  # i print this and i get the json file properly
            return JsonResponse({"success": "200"})

Чтобы изменить это поведение по умолчанию, установите параметр SESSION_SAVE_EVERY_REQUEST в True. При установке значения True, Django будет сохранять сессию в базе данных при каждом запросе.

.
Вернуться на верх