1

我开始使用 Jinja Templating 和 Python 来开发 Web 应用程序。使用 Jinja,我可以将对象从我的 Python 代码发送到我的 index.html,但是是否可以从我的 index.html 接收对象到我的 Python 代码?例如,来回传递一个列表。如果是这样,你有什么例子吗?

谢谢你!

4

2 回答 2

1

为什么要这样做?您在应用程序的控制器中可以访问您在模板中实现的任何逻辑,包括您放置在模板上下文中的任何变量。

如果数据由于与用户的交互而发生了变化,那么在我看来,获取数据的最佳方法是设置一个表单并使用普通的 POST 方法发送请求和所需的数据,正确编码和转义,回到你的程序。通过这种方式,您可以免受 XSS 问题以及其他不便的影响。我永远不会在模板中进行任何处理,只会使用任何本地逻辑来修改演示文稿本身。

编辑考虑到您的情况,我建议如下:

  1. 用户按下页面上的按钮并调用 Get 处理程序
  2. 获取处理程序查询数据库并接收列表缓存的图像列表,可能在内存缓存中,并且密钥与编码为模板显示的 GET URL 中的参数的图像列表一起发送
  3. 图像列表被传递到模板引擎进行显示
  4. 按下另一个按钮并使用在 GET URL 中编码的接收到的密钥调用不同的 Get 处理程序,在清理和验证之后,检索缓存列表

如果您不想要缓存键值对的中间步骤,您可能希望在 GET URL 中对整个列表进行编码,并且对整个列表进行清理和验证的步骤应该像在键上一样简单名单。这两种方法都避免了数据库的往返,保护您免受恶意使用,并尊重数据、表示和逻辑的分离。

于 2012-05-05T10:24:49.197 回答
-1

只是一个想法..您是否尝试过在处理模板后访问传递给 jinja 的 dict 中的变量?

于 2012-05-05T10:20:42.970 回答