簡體   English   中英

如何使用沒有WTForms的燒瓶創建動態表單

[英]How to create a dynamic form with flask without WTForms

我要做的是創建一個自動生成的表單,然后使用該表單中的值繼續執行該程序。 目前要生成我的表單我正在使用此功能

real_names=["Jason","Casandra"]這部分代碼不是靜態的,它是使用表單前一部分的名稱生成的。

     form = """
            <h2>What fields do you want your employee's on?:</h2>
            <dl>
            """
            def form_creator(name):
                            print name
                            dt = "<dt>"
                            dt_1 = dt+name.title()+":"
                            dt_kill = "</dt>"
                            input_basic_1 = '''<input name="''' 
                            input_basic_2 = """" size="1"> </input>"""
                            generated_input = dt_1+ input_basic_1 + name.lower() + input_basic_2+dt_kill
                            # flash(generated_input)
                            return generated_input
    for i in real_names:
                print ("\n\n"+i+"\n\n")
                form += form_creator(i)

return render_template('assign_score_b.html',form=form)

HTML代碼是

{% extends "assign.html" %}
{% block content %}

<form method="POST">
   {{form|safe}}
</form>

{% endblock %}

現在,在我生成表單然后從用戶獲取變量后,我想處理表單,但我似乎無法弄清楚如何獲取要檢查的值。 我試圖為答案做的是

answers = []
for i in real_names:
    testable_var = request.form[i]
    try:
        int(testable_var)
    except:
        flash("Please submit an number not a letter")
    answers.append(testable_var)

但是當我試圖這樣做時,我收到了一個錯誤請求。 使用WTForms 不是一個選項你的幫助將非常感謝謝謝!

你的代碼會起作用,但你犯了一個小錯誤。 所以你的名字是"Jason" and "Casandra"但你的表格的名字是"jason" and "casandra"名字本身是大寫的,但形式值不是! 如果你降低變量,你的代碼將會起作用i只需使用字符串操作即可完成此操作所有你需要做的就是將.lower()添加到你的變量中,因此你的代碼看起來像這樣:

for i in real_names:
    testable_var = request.form[i.lower()]
    try:
        int(testable_var)
    except:
        flash("Please submit an number not a letter")
    answers.append(testable_var)

現在您的代碼將起作用!

暫無
暫無

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

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