[爆卦]jinja2教學是什麼?優點缺點精華區懶人包

為什麼這篇jinja2教學鄉民發文收入到精華區:因為在jinja2教學這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Killercat (殺人貓™)看板Python標題[心得] Flask + AngularJS...



最近在玩AngularJS跟Google Application Engine,
PyCharm預設的組合就是Flask + Jinja2
配著Flask教學加上AngularJS教學,三分鐘就踢到了鐵板

<div ng-app="">
<p>Name : <input type="text" ng-model="name"></p>
<h1>Hello {{name}}</h1>
</div>

這個簡單到不能再簡單的東西,在網頁上永遠是錯誤的結果
本來對話筐輸入會馬上呈現在Hello後面,但是始終Hello後面都是一片空白
(正確結果請參照 http://tinyurl.com/hyhfo4n )

本著實事求是的精神,打開safari收到的html仔細端詳了一下,原來他變成

<div ng-app="">
<p>Name : <input type="text" ng-model="name"></p>
<h1>Hello </h1>
</div>

搞個半天原來是{{ }}同時也是Jinja2的data binder的識別符號
Jinja2在render這個html的時候(render_template() )順手把沒bind到的東西移除了

當然直接拿掉Jinja2的renderer也是個方法
(就把每個endpoint最後的return render_template('template.html')
改成直接輸出template.html內容就可以了)
不過這種CGI式的renderer還是在某些場合挺方便的,不想這樣說宰就宰

後來查個半天,把jinja2的data binder識別符號換掉就好
不過網路上找到的解法是建議順便把其他兩組一起替換掉

jinja_options = app.jinja_options.copy()

jinja_options.update(dict(
block_start_string='<%',
block_end_string='%>',
variable_start_string='%%',
variable_end_string='%%',
comment_start_string='<#',
comment_end_string='#>'
))
app.jinja_options = jinja_options

暫時解決了這個問題了... 三分鐘就撞牆,花30分找解法 =口=

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.162.116
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1452188261.A.F00.html
amigcamel: 不想改可用{% raw %}{% endraw %} 01/08 11:25
uranusjr: 如果要玩 AngularJS 建議還是改一下, 用 raw 會寫到手廢 01/08 14:24
maxjoiny: ANGULARJS 可以透過config去換符號 把{{}} 改成別的就好 01/08 20:50

你可能也想看看

搜尋相關網站