2017-02-26 6 views
0

私はJinjaに2つの引数を必要とするカスタムフィルタを持っています。私はJinjaテンプレートの中で関数を呼び出していますが、位置引数についてはTypeErrorを取得しています。私の関数が取ることをここ 位置の引数エラーを与えるJinja2カスタム関数

は、機能コード

# Get the total balance of a student to display for an instructor 
def get_stud_balance(inst_id, stud_id): 
    balance = 0 
    stud_balance = Packages.query.filter(Packages.inst_id == inst_id, Packages.stud_id == stud_id).all() 
    for row in stud_balance: 
     balance += row.balance 
    return balance 

これは、それが登録されているか..です

app.jinja_env.filters['get_balance'] = filters.get_stud_balance 

これはどのようである(正しい)が、3が与えられたことを(間違って)2であります私はそれを電話しようとしています..

{% for row in studs %} <!-- START for loop --> 
       <div class="col-md-4"> 
        <div class="panel panel-default"> 
         <div class="panel-heading"><center>{{ row.first_name }} {{ row.last_name }}</center></div> 
         <div class="panel-body"> 
          <li>Cell Phone: {{ row.cell|phone }}</li> 
          <li>Home Phone: {{ row.home|phone }}</li> 
          <li>Email: {{ row.email }} </li> 
          <li>Birthday: {{ row.birthday|date }}</li> 
          <li>Gender: {{ row.gender|gender }}</li> 
          <li>Balance: {{ balance|get_balance(row.inst_id, row.stud_id) }}</li> 
         </div> 
        </div> 
       </div> 
       {% endfor %} <!-- /END for loop --> 

私はここで何が欠けていますか?私はファイルから実行するだけで、テンプレートをロードするときには問題なく関数を実行できます。

答えて

0

私はそれを理解しました。Jinja2のフィルタは1つの引数しか取ることができません。任意の量の引数を取ることができるcontext_processorを使用する必要がありました。

これは私が修正するために使用したコードです。

@app.context_processor 
def utility_processor(): 
    def get_stud_balance(inst_id, stud_id): 
     inst_id = int(inst_id) 
     stud_id = int(stud_id) 
     balance = 0 
     stud_balance = Packages.query.filter(Packages.inst_id == inst_id, Packages.stud_id == stud_id).all() 
     if stud_balance: 
      for row in stud_balance: 
       balance += row.balance 
      return balance 
     else: 
      return None 
    return dict(get_stud_balance=get_stud_balance) 
+0

これはそれを修正したであろう、 '

  • バランス:{{row.inst_id | get_balance(row.stud_id)}}
  • ' – franklinsijo

    関連する問題