如何设置 cookie 值,然后立即重定向到下一页并显示其中的内容
How to set cookie values and then immediately redirect to the next page and display what's in them
所以我需要从一个视图存储两个变量并重定向到另一个视图并显示它们。显而易见的解决方案是使用会话,但我无权访问会话,因为我没有该项目的数据库,所以我尝试在客户端进行会话,因为这无论如何都不是真正的安全问题。这是我到目前为止的尝试:
查看我设置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})
未设置通过和错误,因为它们 return 都不存在。如果不 return 转到原始页面,我将如何执行此操作?我不想 return response where response = render_to_response(当前视图的模板),因为它违背了我想要做的事情的目的。
您没有获得任何 cookie 值,因为实际上在为响应分配了 cookie 之后,函数 return 是另一个 Http 响应。
response = HttpResponse('/result') # first Http Response
response.set_cookie('errors', [])
...
return redirect('/result') # An other one
在最后一行,你return另一个回复。
所以你应该return同样的回应:
response = redirect('/result') # redirect is here
response.set_cookie('errors', [])
...
return response
所以我需要从一个视图存储两个变量并重定向到另一个视图并显示它们。显而易见的解决方案是使用会话,但我无权访问会话,因为我没有该项目的数据库,所以我尝试在客户端进行会话,因为这无论如何都不是真正的安全问题。这是我到目前为止的尝试:
查看我设置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})
未设置通过和错误,因为它们 return 都不存在。如果不 return 转到原始页面,我将如何执行此操作?我不想 return response where response = render_to_response(当前视图的模板),因为它违背了我想要做的事情的目的。
您没有获得任何 cookie 值,因为实际上在为响应分配了 cookie 之后,函数 return 是另一个 Http 响应。
response = HttpResponse('/result') # first Http Response
response.set_cookie('errors', [])
...
return redirect('/result') # An other one
在最后一行,你return另一个回复。
所以你应该return同样的回应:
response = redirect('/result') # redirect is here
response.set_cookie('errors', [])
...
return response