在 Pyramid 中的表单视图之间传递数据

Passing data between form views in Pyramid

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

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

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

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

请帮帮我...

最简单的方法是使用 sessions

  • 您需要一个将数据存储在服务器上的会话后端(参见 pyramid_redis_session)。还有基于 cookie 的会话解决方案,其中所有数据都存储在客户端。

  • 第一个视图将所有传递过来的数据写入会话:

    request.session["mydata"] = value
    
  • 第二个视图从会话中读取数据

     print(request.session["mydata"])
    

另一种将数据从一个视图传递到另一个视图的方法是通过 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
}

关于您的评论:您不能将 HTTPFound 与 POST 一起使用。但是,您可以使用 <form method="post" action="/here" ...> 直接将表单提交给 /here。在这种情况下,您将能够使用 request.POST.get('greeting') 访问数据。