報錯信息
jinja2.exceptions.TemplateSyntaxErrorjinja2.exceptions.TemplateSyntaxError: Expected an expression, got 'end of statement block'
原因
今天在用Flask寫web微信爬蟲時,到了往前端頁面 render_template()數據這一步,突然開始作死式的報錯,怎么調后端都沒用;
然而,問題的重點不在后端,細節見下文:
后端:
前端:
結果:
排錯
排查1
既然返回時有數據會報錯,試下不傳數據!
后端:
前端:
結果:
wtf~~~
顯然還是不行……
按理說,直接 render_template()一個單獨頁面沒毛病的啊……
繼續排查……
排查2
這下直接返回字符串,不render了
后端:
前端:
前端……是沒有前端的……
因為直接 return 的是字符串,所以,用不到前端。
結果:
排查3
綜上,可以基本斷定是模板文件的問題,也就是 index.html 文件的問題;
修改 index.html 內容試試:
后端:
不傳數據,只render 一個頁面;
前端:
干凈整潔,就一個 h1 標簽 和文本內容
結果:
總結
綜上對比,基本可以斷定是那段 被我注釋掉的代碼在作祟;
注釋內容是我直接在pycharm快捷鍵注釋的, 對於html來說,這注釋沒毛病;
但 jinja2 語法不認的!
jinja2 語法有自己的注釋方法;也就是說本次問題症結就是 jinja2 語法中的 “注釋” 方式;
jinja2 注釋方式
在jinja2中 {# #} 表示注釋,其中內容不被模板引擎轉義。