踩坑之jinja2注释问题(Flask中)

报错信息

 jinja2.exceptions.TemplateSyntaxError 

jinja2.exceptions.TemplateSyntaxError: Expected an expression, got 'end of statement block'

原因

今天在用Flask写web微信爬虫时,到了往前端页面 render_template()数据这一步,突然开始作死式的报错,怎么调后端都没用;

然而,问题的重点不在后端,细节见下文:

后端:

踩坑之jinja2注释问题(Flask中)_第1张图片

前端:

踩坑之jinja2注释问题(Flask中)_第2张图片

结果:

踩坑之jinja2注释问题(Flask中)_第3张图片

排错

排查1

既然返回时有数据会报错,试下不传数据!

后端:

踩坑之jinja2注释问题(Flask中)_第4张图片

前端:

 踩坑之jinja2注释问题(Flask中)_第5张图片

结果:

踩坑之jinja2注释问题(Flask中)_第6张图片

wtf~~~

显然还是不行……

按理说,直接 render_template()一个单独页面没毛病的啊……

继续排查……

排查2

 这下直接返回字符串,不render了

后端:

踩坑之jinja2注释问题(Flask中)_第7张图片

 前端:

前端……是没有前端的……

因为直接 return 的是字符串,所以,用不到前端。

结果:

踩坑之jinja2注释问题(Flask中)_第8张图片

排查3

综上,可以基本断定是模板文件的问题,也就是 index.html 文件的问题;

修改 index.html 内容试试:

后端:

不传数据,只render 一个页面;

踩坑之jinja2注释问题(Flask中)_第9张图片

前端:

干净整洁,就一个 h1 标签 和文本内容

踩坑之jinja2注释问题(Flask中)_第10张图片

结果:

踩坑之jinja2注释问题(Flask中)_第11张图片

 

总结

综上对比,基本可以断定是那段 被我注释掉的代码在作祟;

注释内容是我直接在pycharm快捷键注释的, 对于html来说,这注释没毛病;

但 jinja2 语法不认的!

jinja2 语法有自己的注释方法;也就是说本次问题症结就是 jinja2 语法中的 “注释” 方式;

jinja2 注释方式

在jinja2中 {
     #  #} 表示注释,其中内容不被模板引擎转义。

 踩坑之jinja2注释问题(Flask中)_第12张图片

 

转载于:https://www.cnblogs.com/bigtreei/p/9016585.html

你可能感兴趣的:(python,前端,后端)