- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Flask 不会使用新变量重新渲染模板页面。
Flask 代码 (app.py):
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route("/",methods = ['GET', 'POST'])
@app.route("/<value>",methods = ['GET', 'POST'])
def index(value=1):
print(value)
return render_template('home.html',number=value)
@app.route("/next",methods = ['GET', 'POST'])
def next():
if request.method == 'POST':
last_num = list(dict(request.form).keys())[0]
last_num = int(last_num)
return redirect(url_for("index",value=last_num+1))
if __name__ == '__main__':
app.run()
HTML 页面 (home.html):
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function() {
$('#submit').click(function() {
$.ajax({
url: '/next',
data: String(Number(document.getElementById("number").textContent)),
type: 'POST',
success: function(response) {
console.log("Awesome");
},
error: function(error) {
console.log(error);
}
});
});
});
</script>
</head>
<body>
<div id="number">
{{number}}
</div>
<button type="button" id="submit">Next</button>
</body>
</html>
HTML 页面中的(最后一个)数字很好地到达了 Flask 代码,并且 index
函数也获得了递增的值。但 HTML 页面不会使用新的 number
变量重新加载。
最佳答案
有几件事。
首先,您可以将 flask 变量直接插入到您的JavaScript。它可能会导致您的编辑器出现错误(不是在本例中),但是当页面呈现时,它会起作用适本地。 (即数据:“{{ number|safe }}”
)
其次,您没有重定向客户端。您正在从 API 调用返回重定向,但您没有遵循它。仅当您将 /next
端点呈现为页面时,该函数才有效。您应该返回您希望客户端导航到的 URL。您可以在 JavaScript 中通过多种方式设置页面 URL。如果您只想重新加载页面,请将 location.reload(true)
放入成功处理程序中。 (通过将forceGet设置为true,您将阻止浏览器从缓存中重新加载,以便服务器实际上更新页面上的变量)。请注意,如果您这样做,您将需要在后端全局存储该变量,否则它不会更新。这可能是您现在的问题(如果您每次都手动重新加载页面):您的变量仅通过重定向传递,而您又没有遵循和呈现。
最后,我想说有更好的方法来完成你想要做的事情。也许将变量存储在本地并远程更新到数据库中。无需为如此琐碎的事情重新加载页面。
希望这有帮助。如果我误解了您的问题或犯了错误,请告诉我。
关于javascript - 使用 render_template 重新渲染不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60911565/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!