我正在金字塔框架中创建一个项目,所以我有一个视图,其中包含一个带有2个输入类型文本和一个提交按钮的表单。
表单是一个post方法,所以即时通过POST请求获取它们。
我想将它们发送到新视图并在屏幕上显示。 意思是:
on 0.0.0.0:6543是第一个视图中的表单。
我想在0.0.0.0:6543/here
我尝试使用HTTPfound,但我想我对如何真正传递变量缺乏了解。
请帮帮我......
答案 0 :(得分:0)
最简单的方法是使用sessions。
您需要一个会话后端,将您的数据存储在服务器上(请参阅pyramid_redis_session)。还有基于cookie的会话解决方案,其中所有数据都存储在客户端。
第一个视图将所有传递的数据写入会话:
request.session["mydata"] = value
第二个视图从会话中读取数据
print(request.session["mydata"])
答案 1 :(得分:0)
将数据从一个视图传递到另一个视图的另一种方法是通过URL。与会话不同,这不需要服务器端支持。此外,它是RESTful;)
return HTTPFound('/here?greeting=Hello&subject=World')
在第二个视图中,您只需从request.GET
获取变量:
greeting = request.GET.get('greeting', '')
subject = request.GET.get('subject', '')
# pass the data to the template
return {
"greeting": greeting,
"subject": subject
}
关于您的评论:您无法在POST中使用HTTPFound。但是,您可以使用/here
直接将表单提交至<form method="post" action="/here" ...>
。在这种情况下,您可以使用request.POST.get('greeting')
访问数据。