2017-07-16 22 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

    他們有不同的名字,我將他們全部改爲相同的 –