将代码创建的表单数据提交到POST

时间:2018-09-09 03:37:32

标签: python redirect flask

我正在尝试将表单数据提交给路由,类似于浏览器,但是遇到了麻烦。我将提供的代码简化到了重现该问题所需的最低限度。我可能没有使用我应该使用的功能或做其他错误的事情,但在我搜索过的所有其他帖子中都找不到答案。我不希望数据位于URL上,而是可以通过request.form访问。我正在使用Python 2.7.9。我知道下面显示的代码当前不执行我想要的操作(它将formdata字典放在命令行上)并返回一个无休止的循环,因为从未读取过formdata。我了解这一点,我这样做是为了表明我正在尝试将formdata传递给post函数,我只是不知道该怎么做,同时还要使用重定向。如果我正确阅读了重定向文档,则似乎无法执行此操作。那么,我可以使用其他一些将参数传递给URL并提供表单数据的功能吗?我没有在下面的代码中使用参数,但是实际的代码在使用它们时具有相似的函数结构。这里的主要目标是具有与通过表单提交“选择”或不通过表单提交“选择”时使用的功能(URL路径)相同的功能。任何帮助表示赞赏。谢谢。

getType()

HTML:

rec = "citrus fruit,semi-finished bread,margarine,ready soups tropical
fruit,yogurt,coffee"
#result 
myset = set() 

while rec != "":
    head, _ , rec = rec.partition(',')
    myset.add(head)
print(myset)

1 个答案:

答案 0 :(得分:0)

让我们看看这是否是您的意思,请参阅下面的快速而肮脏的代码。请仔细查看request.args语句,在这里您可以获取存储在url中的变量。

from flask import Flask, redirect, url_for, request, render_template

app = Flask(__name__)

@app.route('/',methods=['POST','GET'])
def test1():
if request.method == 'POST':
    if 'choice' in request.form:
        choice = request.form['choice']
        return render_template('test.html', choice = choice)
    else:
        choice = 'QQQ'
        p1 = 'AAA'
        p2 = 'BBB'
        return redirect(url_for('.test1',param1 = p1, param2 = p2, choice = choice))

choice = request.args.get("choice")
if choice == None:
    choice = 'No choice made yet'
return render_template('test.html',  choice = choice)

if __name__ == "__main__":
    app.run(host='0.0.0.0',port=5000,debug=True)