Как установить значения файлов cookie, а затем сразу же перенаправить на следующую страницу и показать, что в них - PullRequest
0 голосов
/ 06 июня 2018

Так что мне нужно хранить две переменные из одного представления и перенаправлять в другое представление и отображать ихОчевидным решением будет использование сеансов, но у меня нет доступа к сеансам, потому что у меня нет базы данных для этого проекта, поэтому я пытаюсь делать сеансы на стороне клиента, потому что это на самом деле не проблема безопасности.Пока это моя попытка:

Просмотреть, где я устанавливаю куки:

            response = HttpResponse('/result')
            response.set_cookie('passes', True)
            response.set_cookie('errors', [])
            v = jsonschema.Draft4Validator(schema)
            #Uses lazy validation to add all errors to validationErrors array
            for error in v.iter_errors(jsonFile):
                validationErrors.append(error)
                response.set_cookie('passes', False)
            for error in validationErrors:
                error.schma_path = error.schema_path.__str__()[5:]
                print error.schma_path
                print error.schema_path
            response.set_cookie('errors',validationErrors)
            ... 
            return redirect('/result')

Просмотреть, где я пытаюсь получить куки:

passes = request.COOKIES.get('passes',"Doesn't Exist")
errors = request.COOKIES.get('errors', "Doesn't Exist")
return render(request, 'result.html', context = {'errors': errors, 'passes': passes})

передачи и ошибкине установлен, потому что они оба возвращают, не существует.Как бы я это сделал, не возвращаясь на исходную страницу?Я не хочу возвращать ответ, где response = render_to_response (шаблон текущего представления), потому что это противоречит цели того, что я пытаюсь сделать.

1 Ответ

0 голосов
/ 06 июня 2018

Вы не получаете никаких значений cookie, потому что на самом деле после присвоения ответа cookie, функция возвращает другой ответ Http.

response = HttpResponse('/result') # first Http Response
response.set_cookie('errors', [])
... 
return redirect('/result')  # An other one

В последней строке вы возвращаете другой ответ.

, поэтому вы должны вернуть тот же ответ:

response = redirect('/result') # redirect is here
response.set_cookie('errors', [])
... 
return response 
...