2015-12-17 72 views
1

我想傳遞一個參數給一個context_processor函數。如何將參數傳遞給jinja2 flask函數調用?

@app.context_processor 
    def my_utility_processor(): 
     def foo(var): 
      return var 
    return dict(foo=foo) 

的神社/ HTML模板部分看起來像這樣:

<button type="button" class="btn btn-info" onclick="var name={{ i.DeviceName }};this.disabled=true;alert('{{ foo({{ variable }}) }} ')"> 
Click</button> 

是它在某種程度上可以將Jinja2的參數傳遞給神社函數調用?

回答

1

一旦你輸入一個{{ ... }}塊,你將受到Python語法的支配。

alert('{{ foo(variable) }} ')" 

取決於foo輸出,雖然,這可能會導致一個JavaScript錯誤。你可以更進一步,讓金嘉格式輸出爲你

alert({{ foo(variable)|tojson|safe }}) 

這將照顧像你引用字符串的東西。

+0

不完全是我打算做的。我必須調用一個函數並將參數傳遞給該函數。該參數是一個jinja參數{{...}}。我想唯一的解決方案/解決方法是用隱藏的帖子參數和@ app.route函數來創建表單。 – Synal

+0

什麼是「Jinja參數」?如果'foo'和'variable'都來自Python,那麼就是這樣做的。但是,如果'variable'是JavaScript,則不能將JavaScript變量直接傳遞給Python函數,您需要向服務器發出請求。 – dirn

+0

我在jinja模板中循環'{%for i in devices%}',我想創建一個調用python函數的按鈕:'{{foo({{i.DeviceName}})}}' – Synal

相關問題