2016-07-11 8 views
0

pyramidフレームワークを使用して、javameをchameleonテンプレートで実行しようとしているときに、このエラーが見つかりました。Pyramidフレームワークでchameleonテンプレートを使用中に名前エラーが発生しました

これは、sqliteデータベースからデータをフェッチするコードです。

@view_config(route_name='ddo2', renderer='../templates/pages/testpage.pt') 
def ddo2(request): 
    query = request.dbsession.query(UserRoles) 
    allusers = query.filter(UserRoles.role_id == 1).all() 
    length = len(allusers) 
    return {'all_users':allusers,'length':length} 

カメレオンテンプレートファイルtestpage.pt

<html> 
<body> 
<script type="text/javascript"> 

function createMany(nums){ 

    var str = ""; 

    for(i=0;i<nums;i++){ 

     str += "<input type='radio' name='value1' />${all_users[i].id} <br>"; 

} 

    document.getElementById("divTxt").innerHTML = str; 

} 


</script> 

<p> 



    <input type="button" name="button" id="button" value="To view user details click this" onclick="createMany(${length});" /> 



</p> 

<div id="divTxt"></div> 
</body> 
</html> 

エラーページが言っ名エラーを示し、このように書きます:任意の助けのための私

NameError: i 

- Expression: "${all_users[i].id} " 
- Filename: c:\nic\pro\scripts\nic\nic\templates\pages\testpage.pt 
- Location: (line 11: col 57) 
    - Source:  ... adio' name='value1' />${all_users[i].id} <br>"; 
              ^^^^^^^^^^^^^^^^^^^^ 
- Arguments: repeat: {...} (0) 
      renderer_name: ../templates/pages/testpage.pt 
      req: <Request - at 0x560e940L> 
      request: <Request - at 0x560e940L> 
      renderer_info: <RendererHelper - at 0x56b53c8L> 
      length: 2 
      context: <instance None at 0x56a9988L> 
      all_users: <list - at 0x56a9e88L> 
      view: <function ddo2 at 0x55d54a8L> 

感謝。 :)

答えて

0

これはPythonのエラーです。カメレオンのテンプレートtestpage.ptでは、Chameleon(とPython)がエラーで指摘したように解析する構文を使用します。

問題を回避するには、少なくとも2つのオプションがあります。

    は、静的資産として働く、JavaScriptの外部ファイルにインラインで移動し、外部ファイルを参照してインラインで置き換える
  1. JavaScript構文をエスケープして、ChameleonがPythonとして解析しないようにします。
+0

実際に私はこの問題を解決しました。この問題を解決するためにJinja2テンプレートを使用しました。ループのようなループ構造があり、これを使ってPythonオブジェクトに直接アクセスして反復することができます。 [Link](http://jinja.pocoo.org/docs/dev/templates/) – Sreeram

+0

@Sreeram:カメレオンにはPythonのリストを反復する方法がありませんでした:) – Sergey

+0

できることがあれば役に立つでしょうどうすればいいのか教えてください。ありがとう:) @ Sergey – Sreeram

関連する問題