值瓶模板未解析

时间:2017-06-27 07:53:21

标签: python flask

所以,我已经创建了一个可以上传多个文件的烧瓶模板。每种文件类型都有自己的提交按钮,根据单击的按钮,我想要运行不同的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')])

知道可能导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:0)

request.form是一个类似字典的对象。 dict的values()方法可以为您提供值。但“投资组合”和“证券”是,而不是价值。只需使用:

if 'portfolios' in request.form:

等,因为in查看了密钥。

答案 1 :(得分:0)

我明白了!有趣,一直看着这几天,然后决定在这里发布问题然后我自己看到...无论如何,似乎我没有通过按钮传递名称,这导致价值也没有通过... 。