我有一个csv文件,我需要将其读取为列表并将所有项目添加到输入表单中,但是当我使用特定的option value
时,可以通过按逗号添加它们,但是当我从.csv中读取它们时文件,此方法不起作用。可能是什么问题?
with open('templates/Testing.csv') as f:
reader = csv.reader(f)
myvalues = next(reader)
@app.route('/', methods=['GET'])
def page_show():
return render_template('includes/default.html', myvalues=myvalues)
.csv方法(按逗号不起作用)
<form action="/action" method="POST">
<input list="myvalues" multiple>
<datalist id="myvalues">
{% for val in myvalues %}
<option value="{{val}}">{{val}}</option>
{% endfor %}
</datalist>
<input type="submit">
</form>
添加特定值方法(按逗号即可)
<form action="/action" method="POST">
<input list="myvalues" multiple>
<datalist id="myvalues">
<option value="one">one</option>
<option value="two">one</option>
<option value="three">one</option>
<option value="four">one</option>
</datalist>
<input type="submit">
</form>
答案 0 :(得分:0)
我想我至少可以解决您的问题的一部分。
首先, next()
函数仅返回列表的下一项(csv数据)。我认为您应该使用list()
函数。
此函数创建一个列表,您可以在其中循环访问default.html
。
要解决变量default.html
中不可访问的问题,可能会给您以下错误:UnboundLocalError: local variable 'myvalues' referenced before assignment
。这意味着您正在尝试将myvalues
分配给myvalues
,但是python不知道在哪里寻找该变量。进一步了解here。
那么您将如何解决呢?只需将myvalues
重命名为myData
之类。请参阅下面的完整代码:
myvalues = []
with open('templates/Testing.csv') as f:
reader = csv.reader(f)
myvalues = next(reader)
@app.route('/', methods=['GET'])
def page_show():
return render_template('includes/default.html', myData=myvalues)
<form action="/action" method="POST">
<input list="myvalues" multiple>
<datalist id="myvalues">
{% for val in myData %}
<option value="{{val}}">{{val}}</option>
{% endfor %}
</datalist>
<input type="submit">
</form>
顺便说一句
我可以通过按逗号添加它们,但是当我从.csv文件中读取它们时,此方法不起作用
我不知道你的意思,请详细说明。
希望这会有所帮助!如果没有,请发表评论