2017-07-16 51 views
1

我试图让这个工作。我在我的index.html上有多个提交表单。取决于我点击我想让它在我的server.py文件中运行正确的if/elif语句。目前,它只适用于“农场”,原因很明显,因为我有建筑物=形成“农场”。我如何设置它以基于我点击哪个提交按钮的适当声明工作?如何判断哪个HTML表单已提交给Flask?

@app.route("/") 
def index(): 
    session["my_gold"]=0 
    return render_template("index.html") 

@app.route("/process_money", methods=["post"]) 
def money(): 

building = request.form["farms"] 

if request.form["farms"] == building: 
    print "hello" 
    gold = random.randrange(10,21) 
    print gold 
    session["my_gold"] = session["my_gold"] + gold 
    print session["my_gold"] 

elif request.form["caves"] == building: 
    print "goodbye" 
    gold = random.randrange(5,11) 
    print gold 
    session["my_gold"] = session["my_gold"] + gold 
    print session["my_gold"] 

elif request.form["houses"] == building: 
    print "wow" 
    gold = random.randrange(2,6) 
    print gold 
    session["my_gold"] = session["my_gold"] + gold 
    print session["my_gold"] 

elif request.form["casinos"] == building: 
    print "sucka" 
    gold = random.randrange(0,51) 
    print gold 
    session["my_gold"] = session["my_gold"] + gold 
    print session["my_gold"] 


return redirect("/") 

app.run(debug=True)`˚` 
+0

我可以添加HTML代码如果需要的话! –

+0

我只是想说,我非常欣赏** sucka **作为调试输出的使用。 – CDahn

+0

大声笑,是的,我只是有一段时间! –

回答

1

一个隐藏的文本字段添加到每个指出哪些形式通过查看隐藏的文本字段的值提交的表单提交你的Python代码。

<form action="/stuff.py"> 
    <input type="hidden" name="building" value="casinos"> 
    <input type="submit" value="Submit"> 
</form> 

在你烧瓶代码,而不是寻找每elif唯一命名的组件,你只想寻找隐藏的文本字段,看哪个值有:

@app.route("/") 
def index(): 
    session["my_gold"]=0 
    return render_template("index.html") 

@app.route("/process_money", methods=["post"]) 
def money(): 
    if request.form["building"] == "casinos": 
     print "I'm gonna get you" 
    elif request.form["building"] == "caves": 
     print "Bearodactyl, run!" 
+0

@ CDahn-现在一切正常,谢谢 –

0

这里有几个选项:

  1. 将在发送该类型形式的各种形式的隐藏输入是这样的:

    <input type="hidden" name="building" value="houses">

    ,那么你可以运行你if声明反对该值。

  • 发送每个窗体到其自己的URL。然后设置在瓶中,与每个窗体独立处理路线:

    @app.route("/process_houses", methods=["post"])

  • +0

    每个输入都设置为隐藏。当我尝试运行该语句时,它只能用于第一个输入。当我点击其他人时,他们通过错误代码。我的任务说我不能使用多个路由,只是“/”和我的“process_money” –

    +0

    你的html是什么样子?隐藏的输入应该都具有相同的名称和不同的值,以便您可以测试该值。 –

    +0

    他们有不同的名字,我将他们全部改为相同的 –