python - 如何设置 cookie 值,然后立即重定向到下一页并显示其中的内容
问题描述
所以我需要从一个视图存储两个变量并重定向到另一个视图并显示它们。显而易见的解决方案是使用会话,但我无权访问会话,因为我没有该项目的数据库,所以我尝试在客户端进行会话,因为无论如何这并不是一个真正的安全问题。这是我迄今为止的尝试:
查看我设置 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})
未设置通过和错误,因为它们都返回不存在。如果不返回原始页面,我将如何做到这一点?我不想在 response = render_to_response(current view's template) 处返回响应,因为它违背了我想要做的事情的目的。
解决方案
您没有获得任何 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
推荐阅读
- sql - 从两个变量生成年龄时,将表达式转换为数据类型的算术溢出错误
- .net - dotnet test 不会递归搜索带有通配符的 .csproj 文件夹
- python - Path('foo').exists() 的缺点!= bool(Path('foo'))
- git - 无法部署到heroku,因为找不到文件
- common-lisp - 在 Common Lisp 中声明约束/多态类型
- scala - 在火花中选择每行的所有非空列名
- python - pytorch 模型中的参数如何不是叶子并且在计算图中?
- dijkstra - 在有向加权图中找到最短循环
- javascript - 在 JavaScript 中剥离部分字符串时哪种方式更快
- ios - 无法识别的选择器发送到实例 obj c