所以,我已经创建了一个可以上传多个文件的烧瓶模板。每种文件类型都有自己的提交按钮,根据单击的按钮,我想要运行不同的Python代码。
我的Flask模板的前半部分如下所示:
<h3> Upload Portfolio Data</h3>
<form action="{{ url_for('admin') }}" method="post" enctype=multipart/form-data>
<fieldset>
<label class="control-label">Select Portfolio Upload File</label>
<input id="input-1" type="file" class="file" name="portfolios">
<div class="form-group">
<button class="btn btn-default" type="submit" value = "portfolios">Upload</button>
</div>
<h3>Upload Security Lists</h3>
<label class="control-label">Select Security Upload File</label>
<input id="input-1" type="file" class="file" name="securities">
<div class="form-group">
<button class="btn btn-default" type="submit" value = "securities">Upload</button>
</div>
<table class="table" style="width:100%">
<tr>
<th>Priority </th>
<th>Target </th>
</tr>
<tr>
<h2>Transaction Priority</h2>
<td>1st</td>
<td>
<select class="form-control" name="first" style="float:left; width:150px">
<option value="asset_allocation">Asset Allocation</option>
<option value="sector">Sector</option>
<option value="region">Region</option>
<option value="security_opinion">Security Neutral</option>
<option value="security_nr">Security NR</option>
</select>
</td>
</tr>
<tr>
<td>2nd</td>
<td>
<select class="form-control" name="second" style="float:left; width:150px">
<option value="asset_allocation">Asset Allocation</option>
<option value="sector" selected ="selected">Sector</option>
<option value="region">Region</option>
<option value="security_opinion">Security Neutral</option>
<option value="security_nr">Security NR</option>
</select>
</td>
</tr>
在Python中,我尝试按如下方式读取按钮的值:
if request.method == "POST":
if 'portfolios' in request.form.values():
# do something
if 'securities' in request.form.values():
# do something
但不知何故,按钮的值不会传递给request.form.values()函数。如果我打印request.form然后它有我表单中其他地方的值,但不是按钮的值:
ImmutableMultiDict([('second', 'sector'), ('first', 'asset_allocation'), ('fifth', 'security_nr'), ('third', 'region'), ('fourth', 'security_opinion')])
知道可能导致这种情况的原因是什么?
答案 0 :(得分:0)
request.form
是一个类似字典的对象。 dict的values()
方法可以为您提供值。但“投资组合”和“证券”是键,而不是价值。只需使用:
if 'portfolios' in request.form:
等,因为in
查看了密钥。
答案 1 :(得分:0)
我明白了!有趣,一直看着这几天,然后决定在这里发布问题然后我自己看到...无论如何,似乎我没有通过按钮传递名称,这导致价值也没有通过... 。