我总是使用标准的Flask命令render_template()
,来呈现我的模板。整个模板只是静态的,但是有一个表单,在用户输入后会改变,还有一个图像滑块。现在的问题是:当用户提交他/她的输入时,wohle模板将被重新呈现。在
我是否可能只更新表单数据而不更改页面的其余部分?在
我的模板是这样的:
<html>
<head>
</head>
<body>
<form action="/" method ="POST" id="Form">
{{msform.ms_1}} is to {{msform.ms_2}} like {{msform.ms_3}} is to {{msform.ms_submit}}
</form>
</body>
</html>
我的views.py
如下:
我应该把第一个答案放在哪里?谢谢,费德温多
如果希望表单在不重新加载while页面的情况下发送包含数据的请求,那么解决方案是使用Javascript使用XHR请求(AJAX请求)发送表单数据。在
在模板发送到浏览器后,服务器无法仅刷新模板的一部分。HTTP是无状态的,所以在您的浏览器发出提交请求之后,服务器用您呈现的模板进行响应,就这样。在
如果需要“替换”或“重新呈现”页面的一部分而不需要重新加载整个页面,则需要Javascript和XHR请求。在
您需要创建一个Flask端点来接收发布的数据。 使用jQuery的示例:
通常,这类端点返回JSON,但是如果您希望尽可能多地使用服务器端模板,那么可以将重新呈现的表单作为对AJAX调用的响应返回,然后使用jQuery将该响应附加到容器元素中,从而有效地替换表单。在
假设您使用Jinja2作为模板引擎。然后,在第一次呈现整个页面时,可以为表单设置一个partial,它通常包含在主模板中。 然后,当您在提交时响应AJAX请求时,就可以呈现相同的部分。在
希望这对你有帮助。在
相关问题 更多 >
编程相关推荐