gpt4 book ai didi

python - 在 Pyramid 中将表单参数传递到隐藏表单的更好方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:57:49 26 4
gpt4 key购买 nike

在之前的question ,我试图找出在 Pyramid 中的表单之间传递数据的正确策略。根据收到的答复,我决定采用隐藏表单的方法。

我开始实现它,并认为必须有更好的方式来传递数据。具体来说,通过 url 传递参数会产生一个难以解析的元组。

我希望它足够通用,以至于不知道表单有哪些参数,而且它还需要处理文件字段。

我目前如何尝试将表单数据传递到确认页面:

@view_config(renderer="templates/derived/load/error.mak", route_name='process_model_route')
def process_model(self):
#processing logic and validaton, failiure in validation sends user to error.mak
return HTTPFound(route_url('confirm_model_route', self.request, fparams=self.request.POST))

路由:config.add_route('confirm_model_route', 'rnd2/model/confirm/*fparams')

@view_config(renderer="templates/derived/confirm/model.mak", route_name='confirm_model_route')
def confirm_model(self):
form_dict = self.request.matchdict['fparams']
#need to decode and pass to template
return dict({'load_route':load_route, 'form_dict':form_dict})

confirm/model.mak 模板将包含隐藏表单。

最佳答案

这个方法的思路是:

  1. 客户访问页面。
  2. 服务器呈现表单。
  3. 客户填写表格并发送到 URL。
  4. 服务器呈现一个新页面,其中包含一个隐藏表单,其中包含它刚刚在 POST 中收到的所有数据。
  5. 客户端向 URL 发送 POST,确认提交。
  6. 服务器保留来自隐藏表单的数据并重定向。

现在取决于可用性,由您决定您在这里实际需要多少个不同的 URL 以及 Pyramid 中有多少个 View 。您必须考虑无效数据会发生什么情况?

请注意,在上面的大纲中,一旦用户将表单发布到 URL,该 URL 必须返回包含隐藏表单的确认页面。如果您尝试将用户重定向到确认页面,您必须以某种方式保留数据,无论是在 session 中还是通过您在示例中展示的 hack(将所有数据推送到 GET) .第二种解决方案非常糟糕,因为它滥用了 HTTP 中 GET 的真正目的。

还有一个约定,即每个 POST 都应该导致重定向,以避免客户端多次提交表单。考虑到这一点,您可能会考虑拒绝没有“已确认”标志的 POST 并在提示用户后简单地在 javascript 中设置“已确认”标志的简单解决方案。这使您可以保持表单处理逻辑简单。

如果您不想依赖 javascript 并且您不想在 session 中保留表单数据,那么您会遇到在第一个 POST 之后不重定向但其他从上面的大纲来看,它应该很简单。

关于python - 在 Pyramid 中将表单参数传递到隐藏表单的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com