看板 Python 關於我們 聯絡資訊
最近在玩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