我有一个带有HTML页面的烧瓶应用程序。问题在于,在我有{{ Appointments }}
的HTML中,它总是显示空列表的第二个render_template
的值。
@app.route("/PatientDashboard.html", methods=["GET", "POST"])
def PatientDashboard():
if request.method == "POST":
Date = request.form.get("Date")
print(Date)
return render_template("PatientDashboard.html", Appointments=["This should show up."])
else:
return render_template("PatientDashboard.html", Appointments=[])
问题在于前一个render_template
从未被表达。为什么会这样,我将如何解决?
非常感谢您。
编辑1:
下面是相关的HTML。
<script>
var jsDate = $('#calendar').datepicker({
inline: true,
firstDay: 1,
showOtherMonths: false,
dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
onSelect: function(dateText, inst) {
document.getElementById("Date").innerHTML = dateText;
$.ajax({
type: 'POST',
url: "{{ url_for('PatientDashboard') }}",
data: {Date: dateText},
dataType: "text",
});
}
});
</script>
此外,我在分隔符中有{{ Appointments }}
。
答案 0 :(得分:1)
您正在将Appointments
中渲染模板的内容放入POST请求的响应中。如果要在页面上使用Appointments
数据,则需要通过回调扩展POST请求,该回调将使用该数据满足您的任何需求。
那么基本上会发生什么:
Appointments
列表呈现Appointments
的渲染模板典型方法是仅从POST响应中获取相关数据(例如JSON格式),而不是整个页面:
from flask import Response
if request.method == "POST":
Date = request.form.get("Date")
print(Date)
Appointments=["This should show up."]
return Response(json.dumps(Appointments), mimetype='application/json')
else:
return render_template("PatientDashboard.html", Appointments=[])