如何设置cookie值,然后立即重定向到下一页并显示其中的内容

时间:2018-06-06 20:21:40

标签: python django cookies client-side

所以我需要从一个视图存储两个变量并重定向到另一个视图并显示它们。显而易见的解决方案是使用会话,但我无法访问会话,因为我没有这个项目的数据库,因此我尝试在客户端进行会话,因为这不是。反正真的是一个安全问题。这是我到目前为止的尝试:

查看我设置Cookie的位置:

            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')

查看我尝试获取Cookie的位置:

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})

传递和错误未设置,因为它们都返回“不存在”。如果不返回原始页面,我该怎么做?我不想在响应= render_to_response(当前视图的模板)中返回响应,因为它违背了我尝试做的目的。

1 个答案:

答案 0 :(得分:1)

您没有获得任何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