在金字塔中的表单视图之间传递数据

时间:2016-02-11 23:35:20

标签: frameworks pyramid

我正在金字塔框架中创建一个项目,所以我有一个视图,其中包含一个带有2个输入类型文本和一个提交按钮的表单。

表单是一个post方法,所以即时通过POST请求获取它们。

我想将它们发送到新视图并在屏幕上显示。 意思是:

  • on 0.0.0.0:6543是第一个视图中的表单。

  • 我想在0.0.0.0:6543/here

  • 上显示用户在输入中插入的值

我尝试使用HTTPfound,但我想我对如何真正传递变量缺乏了解。

请帮帮我......

2 个答案:

答案 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')访问数据。