2015-10-13 22 views
4

我想在jinja2模板中使用href將用戶發送到基於id的特定結果以瞭解有關該特定結果的更多信息。我創建了一個route url:('view_assessment_result', '/view_assessment_result/{id}'),它根據id提供有關特定結果的所有詳細信息。高級:如何在Jinja2中使用href

我想做什麼:
當用戶點擊ID號,他們會被髮送到路線view_assessment_result/{some_id}將呈現該頁面的基於迭代for a in assessment...發現id細節。 我試圖尋找案件,但其他人似乎使用Flask,我不使用。下面的模板代碼沒有完成手頭的任務。

下面

見代碼:

路線配置:

#Route convention: resource 'name' 'url dispath' 
    config.add_route('view_assessment_result', '/view_assessment_result/{id}') 

神社模板

 <tr> 
     {% for a in assessment_results %} 
       <td><a href="{{ '/view_assessment_result' }}">{{ a.id }}</a></td> 
      <td>{{ a.owner }}</td> 
      <td>{{a.assessment }}</td> 
     </tr> 
     {% endfor %} 

視圖配置呈現由上述href發送特定的結果:

@view_config(route_name='view_assessment_result', request_method='GET', renderer='templates/analyst_view.jinja2') 
def view_assessment_result(request): 
    with transaction.manager: 
     assessment_result_id = int(request.matchdict['id']) 
     assessment_result = api.retrieve_assessment_result(assessment_result_id) 
     if not assessment_result: 
      raise HTTPNotFound() 
    #more code 

回答

5

您需要將id添加到您的URL路徑中。添加的ID(從Python變量a.id到您的網址的方法之一是使用% string formatting operator,就像這樣:

<a href="{{ '/view_assessment_result/%s'%a.id }}">{{ a.id }}</a> 

另外,如果您a.id可能包含特殊字符(/&,等等),你可以通過urlencode過濾轉義:

<a href="{{ '/view_assessment_result/%s'%a.id|urlencode }}">{{ a.id }}</a> 
+0

我得到'404 Not Found,找不到資源。,/ view_assessment_result' ... {{a.id}}'只是打印一個數字,例如: '2' – thesayhey

+0

什麼URL生成404? –

+0

'http://0.0.0.0:6543/view_assessment_result?1' – thesayhey