2017-05-31 54 views
0

首先,還有另一個問題here詢問關於檢索元組值的問題,但是我嘗試了這個建議,並且它不適合我的需要(建議使用[1]撥打第二個值即{{ form.staff.data[1] }} - 這並沒有爲我工作WTForms SelectField中的第二個元組的Retreive值

我已經創建了這種形式基本上是一個下拉菜單與員工姓名成員是:

class StaffNames(Form): 
     staff = SelectField(
     'staff', 
     choices=[("", ""), ('1', 'John Thomas'), ('2', 'Chris Davis'), ('3', 'Lyn Taco')], validators=[DataRequired()] 
     ) 

下面是相關的。 info視圖文件中的信息,下拉列表位於索引頁面上,結果以res結尾ULTS頁:

@app.route('/', methods=['GET', 'POST']) 
@app.route('/index', methods=['GET', 'POST']) 
def index(): 
     form = StaffNames() 
     if form.validate_on_submit(): 
       return redirect('/results') 
     return render_template('index.html',title='Search Page',form=form) 


@app.route('/results', methods=['GET', 'POST']) 
def results(): 
     form =StaffNames() 
     return render_template('results.html', 
          title='Results',form=form) 

這裏顯示的下拉中的index.html:

<!-- extend base layout --> 
{% extends "base.html" %} 

{% block content %} 
<center> 
    <h1>Search</h1> 
    <form action="results" method="post" name="indexsearch"> 
     {{ form.hidden_tag() }} 
     <p>{{ form.ranumber }} Enter RA Number</p> 
     {% for error in form.ranumber.errors %} 
     <span style="color: red;">[{{ error }}]</span> 
      {% endfor %}<br> 
     <p>{{ form.staff }} Select your name</p> 
     {% for error in form.staff.errors %} 
     <span style="color: red;">[{{ error }}]</span> 
      {% endfor %}<br> 


     <p><input type="submit" value="Search"></p> 
    </form> 

{% endblock %} 

這裏是一個意在顯示被選中的選項我results.html文件。

<!-- extend base layout --> 
{% extends "base.html" %} 

{% block content %} 


<table border=1 > 
<tr> 
     <th>Disc Number</th> 
     <th>Staff Name</th> 
<tr> 
<td> {{ form.ranumber.data }} </td> 
<td> {{ form.staff.data }} </td> 
</tr> 
</table> 




{% endblock %} 

該下拉按照原樣工作,在上一頁輸入的信息打印在results.html頁面上。但是,當我打電話時:

{{ form.staff.data }} 

正在打印來自SelectField的第一個元組數據。我想要稱之爲員工的真實姓名,例如,而不是打印「2」,它應該打印「約翰托馬斯」。我該如何調用第二個數據元組(即本例中的名稱)而不是第一個?

感謝

+0

可能重複的[從Python元組獲取一個值](https://stackoverflow.com/questions/3136059/getting-one-value-from-a-python-tuple) –

+0

@WillDaSilva我已經看到答案,它似乎表明我應該調用{{form.staff.data [1]}}但這不會產生結果。 – nmh

回答

0

如果你只是想在results.html名稱顯示,你可以在你的視圖名稱,然後將它傳遞給模板作爲變量(staff_name)是這樣的:

staff_choices=[("", ""), ('1', 'John Thomas'), ('2', 'Chris Davis'), ('3', 'Lyn Taco')] 
class StaffNames(Form): 
    staff = SelectField('staff',choices=staff_choices)  


@app.route('/', methods=['GET', 'POST']) 
@app.route('/index', methods=['GET', 'POST']) 
def index(): 
     form = StaffNames() 
     if form.validate_on_submit(): 
       return redirect('/results') 
     return render_template('index.html',title='Search Page',form=form) 


@app.route('/results', methods=['GET', 'POST']) 
def results(): 
     form =StaffNames() 
     return render_template('results.html', 
          title='Results',form=form, staff_name = dict(staff_choices).get(form.staff.data)) 

在您的results.html模板中,使用{{ staff_name }}來獲取名稱。

順便說一句,你可以改變你的選擇的索引相同的名稱,然後你的{{ form.staff.data }}將做的工作,以顯示名稱。

+0

嗨,感謝您的回覆。我想你可能誤解了我的問題。我的results.html旨在顯示在index.html中選擇的選項(爲了清楚起見,我已經添加了該選項)。我在results.html中有一個表,並且index.html中的下拉列表中的用戶選擇將顯示在results.html的表中,但是此時它顯示的是數字,而不是它們的名稱。 – nmh

+0

好的,我更新了答案。 –

+0

好吧,我明天會試試這個時候,當我回到我的工作電腦上,我會讓你知道它是怎麼回事,如果它有效,接受答案。 – nmh

相關問題