烧瓶:带有对象传递的render_template表示“不允许使用方法”

时间:2019-09-25 14:57:49

标签: redirect flask

我有一个基于班级动态的学生表。也就是说,该表具有每个时期块中的学生列表。动态构建的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 %}

0 个答案:

没有答案