2015-06-21 67 views
0

我正在使用Flask,並且我正在嘗試提交一些不在輸入字段中的數據,以將其添加到數據庫中。隨着物(S)Flask在表單輸入字段之外提交數據

神社代碼如下所示:

{% for item in items %} 
    <tr> 
     <form id="adauga_{{ item.stoc_id }}" action="{{ url_for('adauga') }}" method="POST"> 
      <td>{{ item.stoc_id }}</td> 
      <td>{{ item.denumire_produs }}</td> 
      <td>{{ item.producator }}</td> 
      <td>{{ item.data_expirarii }}</td> 
      <td>{{ item.cant_fl }}</td> 
      <td>{{ item.fractie }}</td> 
      <td>{{ '%0.2f' | format(item.pret_fl | float) }}</td> 
      <td><input type="number" max="{{ item.cant_fl }}" class="form-control" name="unitati"></td> 
      <td><input type="number" max="{{ item.fractie }}" class="form-control" name="fractii"></td> 
      <td><button type="submit" class="btn btn-primary" form="adauga_{{ item.stoc_id }}"><i class="fa fa-plus"></i> ADAUGA</button></td> 
     </form> 
    </tr> 
{% endfor %} 

而且在我的應用程序的代碼,我有這個

@richter.route("/adauga", methods=["POST"]) 
def adauga(): 
    denumire_produs = (how do I get this?) 
    producator = (how do I get this?) 
    unitati = request.form["unitati"] 
    fractii = request.form["fractii"] 
    g.db.execute("INSERT INTO stocuri_disponibile (denumire_produs, producator, cant_fl, fractie) VALUES(?, ?, ?, ?)", [denumire_produs, producator, unitati, fractii]) 
    return redirect(request.referrer) 

我怎樣才能獲得denumire_produsproducator表單中的變量?

+0

爲什麼你需要從表單中獲取它們?你已經把它們放在'item'中了,不管它是什麼。 –

+0

如果您不能像上面建議的那樣從'item'獲取數據,爲什麼不將這些數據包含在隱藏的表單輸入中呢? – jonafato

回答

0

我想通了。我認爲。不知道這是否是正確的方式,但它適用於我。

神社代碼

{% for item in items %} 
    <tr> 
     <form id="adauga_{{ item.stoc_id }}" action="{{ url_for('adauga', denumire_med=item.denumire_med, producator=item.producator) }}" method="POST"> 
      <td>{{ item.stoc_id }}</td> 
      <td>{{ item.denumire_med }}</td> 
      <td>{{ item.producator }}</td> 
      <td>{{ item.data_expirarii }}</td> 
      <td>{{ item.cant_fl }}</td> 
      <td>{{ item.fractie }}</td> 
      <td>{{ '%0.2f' | format(item.pret_fl | float) }}</td> 
      <td><input type="number" max="{{ item.cant_fl }}" class="form-control" name="unitati"></td> 
      <td><input type="number" max="{{ item.fractie }}" class="form-control" name="fractii"></td> 
      <td><button type="submit" class="btn btn-primary" form="adauga_{{ item.stoc_id }}"><i class="fa fa-plus"></i> ADAUGA</button></td> 
     </form> 
    </tr> 
{% endfor %} 

施藥代碼:

@richter.route("/adauga/<denumire_med>,<producator>", methods=["POST"]) 
def adauga(denumire_med, producator): 
    unitati = request.form["unitati"] 
    fractii = request.form["fractii"] 
    g.db.execute("INSERT INTO stocuri_disponibile (denumire_med, producator, cant_fl, fractie) VALUES(?, ?, ?, ?)", [denumire_med, producator, unitati, fractii]) 
    return redirect(request.referrer) 

如果有一個更好的辦法,請分享。我總共有15個參數要傳遞,所以我很好奇,如果有更簡單的方法來做到這一點。

乾杯。

0

你可以做到這一點使用HTML <輸入類型=「隱藏」 >標籤模板

<td><input type="hidden" name="denumire_produs" value="{{ item.denumire_produs }}">{{ item.denumire_produs }}</td> 
<td>><input type="hidden" name="producator" value="{{ item.producator }}">{{ item.producator }}</td> 

然後通過形式在你的路由處理功能檢索

def adauga(): 
    denumire_produs = request.form["denumire_produs"] 
    producator = request.form["producator"] 
    ...