我有一个基于班级动态的学生表。也就是说,该表具有每个时期块中的学生列表。动态构建的HTML是
html += "<tr>"+
"<td class='align-middle'><input type='checkbox' class='form-check' style='width:50px;height:50px;'></td>"+
"<td class='align-middle'><input type='image' onclick='StudentClicked(\""+item.FirstName+"\",\""+item.LastName+"\",\""+item.Suffix+"\",\""+item.NickName+"\")' src="+path+" onError='StudentImageError("+i+")' id='studentimage"+i+"' height='100'></td>"+
"<td class='align-middle'>"+item.FirstName +" "+item.LastName+"</td>"+
"<td class='align-middle'></td>"+
"<td class='align-middle'>0</td>" +
"<td class='align-middle'>0</td>"+
"</tr>"
因此,当用户单击图像时,将调用StudentClicked。
function StudentClicked(FirstName, LastName, Suffix, NickName){
$.getJSON('/studentSelected',
{firstName: FirstName, lastName: LastName, suffix: Suffix, nickName: NickName},
function(data){})
}
这里的想法是我想单击图像链接,并且getJSON将寻找我的app.route(“ / studentSelected”)。我将使用传递给此路由的变量执行数据库调用,并建立一个对象。我想将此对象传递给html页面。这是app.route的python代码
@app.route('/studentSelected', methods=['GET','POST'])
def studentSelected():
firstName = request.args.get('firstName', 0, type=str)
lastName = request.args.get('lastName', 0, type=str)
suffix = request.args.get('suffix', 0, type=str)
nickName = request.args.get('nickName', 0, type=str)
students = []
con, cur = ConnectToDatabase()
SQL = "select * from students where FirstName = ? and LastName = ? and Suffix = ? and NickName = ?"
entities = (firstName, lastName, suffix, nickName)
student, cur = Execute(SQL, cur, entities)
return render_template('studentcard.html', student=student)
当前,我收到“不允许使用方法。所请求的URL不允许使用该方法。”我认为这是因为我没有将正确的方法传递给路线。但是,如果可以,我确实将两种方法都传递给了我的路线。为什么我还会收到此错误? studentcard.html存在于文件夹模板中。
我有一个猜测,就是return语句将功能返回给getJSON函数。
对于这种类型的过程,有什么更好的策略?最终结果是使单击的图像运行app.route,调用数据库,然后将webapp重定向到适用于StudentSelected的新路由,并加载并运行此页面。
studentcard.html的内容
{% extends 'layout.html' %}
{% block body %}
<div class="container mt-3">
{% from "includes/_formhelpers.html" import render_field %}
</div>
{% endblock %}