[英]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.