Webサイトの構築・提供を全てPython + Javascript だけでなんて、個人的見解ではとても賛成できないのだが、
なぜか世の中にはそういうものを作るところがあるもので困ったもの。
Flask template Jinja ・・・今時この JSP やJSFみたいなテンプレート書くなんて、
この議論はさておき。。。
Flask は、テンプレート置換に何も指示をしないと、シングルクォート文字は、
'
という文字列に置き換わってしまう。
Jinja のマニュアルに書いてある→ http://jinja.pocoo.org/docs/2.10/templates/#autoescape-overrides
HTMLソースに、以下のように autoescape false で括って書くそうだ。
<script type="text/javascript"> {% autoescape false %} var datastr = "{{content.data}}"; {% endautoescape %} </script>
↑ は、Python のコードで、Flask が投げるデータを
ディクショナリ content = { } の中、content = { 'data' : 'xxxx' } とした時である。
Jinja の autoescape は、バージョンも確認しておいた方が良い。
まず。Flask のバージョン確認
# python >>> import flask >>> flask.__version__ '0.11.1' >>>
Jinja のバージョンは、pip freeze で確認するか、pkg_resources の状況からリスト出力で確認
# python Python 3.5.2 (default, Jun 27 2016, 14:02:55) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import pkg_resources >>> for dist in pkg_resources.working_set: ... print(dist.project_name, dist.version) ... pymongo 3.3.0 Flask 0.11.1 cffi 1.8.2 cryptography 1.5 Pillow 3.3.0 pycrypto 2.6.1 wrapt 1.10.8 lazy-object-proxy 1.2.2 Pygments 2.1.3 psutil 5.0.0 mod-wsgi 4.6.4 : たくさん出る。。。。 : Jinja2 2.8 : >>>
Jinja2 2.8 これなら大丈夫、autoescape は使える。