从Jinja将数据传回Flask
我该如何把信息从用Jinja模板生成的页面传回Flask呢?
假设我打印出一系列的项目列表。用户选择了某个项目,我可以通过JavaScript来获取这个选择。
那么,最好的方法是什么,把用户选择的项目作为参数传递给一个函数,这个函数会生成该项目的独立页面呢?
1 个回答
5
注意:这里的HTML指的是包括JavaScript等在内的HTML。
- Python的网页应用接收到一个HTTP请求,用来渲染一个页面。
- Python代码在控制器里请求Python模型准备数据,以便用Jinja2来渲染HTML页面。
- Jinja2模板渲染出HTML页面。
- Python网页应用将生成的页面发送回客户端。
- 客户端在页面上点击某个元素。这可能会导致新的HTTP请求,获取一个全新的HTML页面,或者是一个AJAX请求(在浏览器的HTML页面中由JavaScript发起的异步HTTP请求),请求网页应用获取新数据,或者向网页应用提供新信息。
- 网页应用(Python)接收到请求后,可以对模型内容进行修改,并将响应返回给JavaScript。
- JavaScript接收到新数据,并用这些数据更新浏览器中的HTML页面。
可以看到,Jinja模板只是一个工具,用来渲染HTML页面。与网页应用的直接互动仅限于提供渲染后的HTML内容,此时用户还没有看到页面,因此无法在内容中包含任何用户互动,这些互动必须由Python代码提供。
在Jinja模板中,唯一能让Python代码知道用户互动的方式是通过上面描述的往返请求。