全部。我正在開發一個Flask應用程序。我正在開發一個網上訂餐系統的網站。我正在爲朋友做這件事,並把它當作一種學習體驗。我要問的問題可能是一個小問題。我不確定問題是否更多與wtforms或flask-wtf。希望有人能提供一些見解。Flask應用程序中的wtforms選擇字段出現「不是有效的選擇」,我做錯了什麼?
我正在創建一個購物車,並通過wtf.quick_form
呈現幾個按鈕。下面是:
<div id='cart'>
<div>
<p>
<center><b>Shopping cart</b></center>
</p>
<div>
{% for item in requested_item_record %}
<div id='cartI'>{{list_of_items[item]['name']}}</div>
<div id='cartB'> {{ wtf.quick_form(remove_item_dict[item]) }}</div>
{% endfor %}
</div>
<p id='cartT'>Subtotal: {{ total_cost/100 }} </p>
<p id='cartT'>Tax: {{ tax/100 }}</p>
<p id='cartT'>Total: {{ total/100 }}</p>
<div id='cartB'>{{ wtf.quick_form(clear_cart) }}</div>
<div id='cartB'>{{ wtf.quick_form(order_type) }}</div>
</div>
</div>
這裏是由wtforms
定義的按鈕:
class AddItem(Form):
submit = SubmitField("Add item to cart")
class ClearCart(Form):
submit = SubmitField("Clear cart")
class RemoveItem(Form):
submit = SubmitField("Remove item")
class OrderType(Form):
select = SelectField("Pickup or delivery?", choices=[('pickup','Pickup'),('delivery','Delivery')])
submit = SubmitField("Proceed to checkout")
的問題是我從OrderType
按鈕看到SelectField
下面「不是一個有效的選擇」 。我認爲這會讓用戶感到困惑。我不知道如何刪除它。下面是截圖:
我只看到的行爲,如果我與RemoveItem
按鈕中的一個或ClearCart
按鈕提交數據。
這是我的看法功能的相關部分:
# generate add buttons for all items of the menu
button_dict = OrderedDict([])
for i in range(number_of_submit_buttons):
button_dict[i] = AddItem(prefix='add item ' + str(i))
clear_cart = ClearCart(prefix="clear cart")
# check for submit data from users, remove an item or clear cart.
for iterable, add_button in enumerate(button_dict):
if button_dict[add_button].validate_on_submit and button_dict[add_bu$
session['requested_item_record'].append(iterable)
session['total_cost'] += list_of_items[iterable]['price']
if clear_cart.validate_on_submit and clear_cart.submit.data:
session['requested_item_record'] = []
session['total_cost'] = 0
# select field, for delivery or pickup
order_type = OrderType(prefix='order_type')
if order_type.validate_on_submit() and order_type.submit.data:
if order_type.select.data == 'delivery' and session['requested_i$
return redirect(url_for('transaction.get_address'))
elif order_type.select.data == 'pickup' and session['requested_i$
return redirect(url_for('transaction.checkout'))
的功能是好的。該網站的工作方式,我想如何,只是由於某種原因,我得到這個錯誤「不是一個有效的選擇」。這僅在我使用刪除項目或清除購物車按鈕之一時出現。
查看功能,還是單功能?如果你已經在一個視圖下獲得了所有的代碼,那麼點擊其他表單上的按鈕將會使得'order_type'的'validate_on_submit()'函數失敗,這會給你帶來的錯誤。將它們拆分成不同的視圖,或者檢測哪個表單正在提交,並且只處理該表單的邏輯。 – Doobeh
感謝您的關注。我認爲這將解決它。我明天會看看這個。如果你喜歡,你可以寫一個答案。 – wgwz
我已經在使用[此方法](http://librelist.com/browser/flask/2010/9/12/flask-wtf-multiple-form-per-view/#d8cfeff63b89d028919d4617ed642d15)來識別不同的提交按鈕。正如我所說,功能工作得很好。每次點擊其中一個按鈕時,它都會執行我想要的任務,而不會出現任何錯誤。但我得到「不是有效的選擇」。所以問題仍然存在。 – wgwz