簡體   English   中英

Flask 帶有 SelectField 的 WTForm 不適用於 if form.validate_on_submit

[英]Flask WTForm with SelectField does not work with if form.validate_on_submit

我用 SelectField 創建了一個 WTForm,但該表單無效。 當我按下提交按鈕時,我沒有收到任何錯誤。

看法

def add_virtual_assistant():

    form = AddVirtualAssistant()

    url = "http://api.dataatwork.org/v1/jobs"
    response = urllib.request.urlopen(url)
    data = json.loads(response.read())
    form.job.choices = [(i["title"]) for i in data if "title" in i]

    if request.method == "POST":
         if form.validate_on_submit():
            return "ok"

我的表格:

from flask_wtf import FlaskForm
from wtforms import SelectField
from wtforms.validators import DataRequired

class AddVirtualAssistant(FlaskForm):

    job = SelectField("job", choices=[], validators=[DataRequired()])

任何讀過這篇文章的人的解決方案我通過在控制台中添加打印錯誤來解決它

print(form.errors.items())

錯誤是 ['要解壓的值太多(預期為 2)'])])我有字符串列表,這是錯誤的。 我將表格選擇更改為

list(enumerate([i["title"] for i in data if "title" in i], 1)) 

表格現在有效。

您的問題是返回的表單不知何故無效。 我建議將表單中的錯誤打印到記錄器(它有一個簡單的form.errors屬性,或者只是在發布后使用 pdb 進行調試。

使用Selectfield我認為問題最可能的根源在於它無法在選項之間找到選定的選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM