Python Don';t使用烧瓶渲染整个模板

Python Don';t使用烧瓶渲染整个模板,python,flask,Python,Flask,我总是使用标准的Flask命令render\u template(),来渲染我的模板。整个模板只是静态的,但有一个表单,在用户输入和一个图像滑块后会发生变化。现在的问题是:当用户提交他/她的输入时,wohle模板将被重新呈现 我是否可能只更新表单数据,而不更改页面的其余部分 我的模板如下所示: <html> <head> </head> <body> <form action="/" method ="POST" id="Form">

我总是使用标准的Flask命令
render\u 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>

我应该把第一个答案放在哪里?谢谢,如果您希望表单在不重新加载整个页面的情况下发送包含数据的请求,那么解决方案是使用JavaScript使用XHR请求(AJAX请求)发送表单数据

服务器无法在模板发送到浏览器后仅刷新模板的一部分。HTTP是无状态的,因此在您的浏览器发出提交请求后,服务器将使用您呈现的模板进行回复,仅此而已

如果只需要“替换”或“重新呈现”页面的一部分,而不需要重新加载整个页面,则需要JavaScript和XHR请求

您需要创建一个Flask端点来接收发布的数据。 使用jQuery的示例:

$("#your-form").submit(function(e) {
    e.preventDefault(); // Prevent the normal form submit

    $.ajax({
           type: "POST",
           url: '/your-api',
           data: $("#your-form").serialize(),
           success: function(data) {
               // Do something here. For example, the server can return JSON here and you use Js to create the template client-side, or you server can return an HTML fragment and here you append it to a dom node
           }
         });
});
通常,这类端点会返回JSON,但如果您希望尽可能坚持使用服务器端模板,可以将重新呈现的表单作为对AJAX调用的响应返回,然后使用jQuery将该响应附加到容器元素中,从而有效地替换表单

假设您使用Jinja2作为模板引擎。然后,在第一次呈现完整页面时,可以为通常包含在主模板中的表单创建一个分部。 然后,当您在提交时响应AJAX请求时,可以只渲染相同的部分


希望这会有所帮助。

如果希望表单在不重新加载整个页面的情况下发送包含数据的请求,那么解决方案是使用JavaScript使用XHR请求(AJAX请求)发送表单数据

服务器无法在模板发送到浏览器后仅刷新模板的一部分。HTTP是无状态的,因此在您的浏览器发出提交请求后,服务器将使用您呈现的模板进行回复,仅此而已

如果只需要“替换”或“重新呈现”页面的一部分,而不需要重新加载整个页面,则需要JavaScript和XHR请求

您需要创建一个Flask端点来接收发布的数据。 使用jQuery的示例:

$("#your-form").submit(function(e) {
    e.preventDefault(); // Prevent the normal form submit

    $.ajax({
           type: "POST",
           url: '/your-api',
           data: $("#your-form").serialize(),
           success: function(data) {
               // Do something here. For example, the server can return JSON here and you use Js to create the template client-side, or you server can return an HTML fragment and here you append it to a dom node
           }
         });
});
通常,这类端点会返回JSON,但如果您希望尽可能坚持使用服务器端模板,可以将重新呈现的表单作为对AJAX调用的响应返回,然后使用jQuery将该响应附加到容器元素中,从而有效地替换表单

假设您使用Jinja2作为模板引擎。然后,在第一次呈现完整页面时,可以为通常包含在主模板中的表单创建一个分部。 然后,当您在提交时响应AJAX请求时,可以只渲染相同的部分


希望这有帮助。

听起来像。是的,有点像。但是我只想在一个有效的输入之后重新呈现我的表单。Flask中没有执行此操作的命令吗?Flask在服务器上运行,表单在客户端上运行。这两者通信的唯一方式是使用HTTP请求。如果您提交了一个表单,您将收到一个请求,该请求必然需要使用自己的HTML生成一个新的响应。如果希望避免重新招标,则需要AJAX。但这和烧瓶没什么关系。听起来像。是的。但是我只想在一个有效的输入之后重新呈现我的表单。Flask中没有执行此操作的命令吗?Flask在服务器上运行,表单在客户端上运行。这两者通信的唯一方式是使用HTTP请求。如果您提交了一个表单,您将收到一个请求,该请求必然需要使用自己的HTML生成一个新的响应。如果希望避免重新招标,则需要AJAX。不过这和烧瓶没关系。嘿,谢谢你的回复。这可能对我有帮助,但我实际上不知道如何使用你的答案。。。我将编辑我的问题,并给你一个简单的工作示例。欢迎任何进一步的建议!嘿,谢谢你的回复。这可能对我有帮助,但我实际上不知道如何使用你的答案。。。我将编辑我的问题,并给你一个简单的工作示例。欢迎任何进一步的建议!