处理更新的搜索表单

时间:2016-12-06 01:10:07

标签: python html forms flask

我有一个页面,用于呈现用户搜索的数据。我想允许用户随时在页面一侧更改搜索凭据。出于某种原因,它只适用于“改变学校”。部分。为什么代码永远不会到达其他搜索字段(例如,当我更改搜索类型时,没有任何反应,没有任何内容打印到控制台)。请忽略缩进错误,粘贴它时搞砸了!

相关HTML :(文本字段的所有名称/ id' s肯定与python代码中的名称相匹配)

<form id="update" name="update" method="post" action="/find-it/">
<input type="submit" value="search" id="enter" form="update">

PYTHON:

        if request.method == 'POST':

        if "updateSchool" in request.form:
            print('school changed')
            school = request.form['updateSchool']
            data = updateSchool(school)

            return render_template('testBrowse.html', data=data)

        elif "updateType" in request.form:
            print('type changed')
            newType = request.form['updateType']

            data = updateType(newType)

            print('getting to update type')

            return render_template('testBrowse.html', data=data)

        elif "updateTitle" in request.form:
            print('title changed')

            newTitle request.form['updateTitle']

            data = updateTitle(newTitle)

            return render_template('testBrowse.html', data=data)

    return render_template('testBrowse.html', data=data)

1 个答案:

答案 0 :(得分:1)

我看到的第一个问题是你发布的html格式中没有updateSchool,updateType或updateTitle输入元素。

如果我们假设它们中的所有三个都以相同的形式存在,那么你将永远不会超过第一个if块。

if "updateSchool" in request.form:

检查已发布的表单中是否存在该字段,而不是填充该字段。所以它总会评估为真。您可能想要使用它:

if request.form['updateSchool']:

仅在填充updateSchool字段时才会评估为真。

此外,您不需要多次调用

return render_template('testBrowse.html', data=data)

你可以把它留在底部。无论上面的代码发生了什么,它总是返回相同的模板和数据。