我正在学习使用Python编写Web应用程序
我向用户呈现一个简单的表单,要求颜色(在下拉菜单中)和一个数字(作为文本输入字段)。
如果该号码无效,我希望用户再次看到该表单,以便她可以编辑该号码,但我希望所选颜色保持选中状态。
这是表格代码:
<form method="post">
Choose a color and a number between 1 and 100.
<br>
<label>Color
<select name="color">
<option>red</option>
<option>blue</option>
<option>green</option>
<option>yellow</option>
</select>
</label>
<label>Number<input name="number" value="%(number)s"></label>
<div>%(error)s</div>
<br>
<br>
<input type="Submit">
</form>
使用字符串替换我设法显示用户输入的数字,但color
字段(当然)总是重置为红色。是否有一种智能方法可以保留用户在下拉列表中选择的数据?
我在考虑selected
HTML关键字,但如何将其置于正确的选项中?
答案 0 :(得分:0)
看起来就像你在%
使用字符串格式一样。我建议使用类似Jinja2的东西,但即使你不这样做,你也可以通过以下方式完成你想要的东西:
html = '''stuff here
<label>Color
<select name="color">
%(colors)s
</select>
</label>
<label>Number<input name="number" value="%%(number)s"></label>
<div>%%(error)s</div>
<br>
<br>
<input type="Submit">'''
color_template = "<option %(selected)s>%(color)s</option>"
colors = [['red', False], ['blue', False], ['green', True]]
color_html = ''
for color, selected in colors:
color_html += color_template % {'color':color,
'selected': 'selected' if selected else ''}
html = html % {'colors': color_html}
在Jinja你可以这样做:
<select name='color'>
{% for color, selected in colors %}
<option {% if selected %}selected{% endif %}>{{ color }}</option>
{% endfor %}
</select>
并提供类似的数据。