FlaskでJinja2テンプレート内でJavaScriptを使用する場合の注意点

Jinja2とJavaScriptの構文の違いについてVScode上で発生する問題点に関するメモ

Jinja2テンプレート内でJavaScriptを使用する場合は、Jinja2とJavaScriptの構文の違いに注意する必要があるようです。

今回ハマった内容。

データベースから特定のデータを削除する際に、誤って削除することがないよう、アラート表示するためにJavaScriptでダイアログを表示

<script>
       function confirmDelete(bookId) {
           if (confirm('本当に削除しますか?')) {
                window.location.href = '/delete/' + bookId;
           }
      }
</script>

HTML記述内に以下の削除ボタンを押すことで、アラートが実行されるように設定

<a href="#" class="btn btn-danger" onclick="confirmDelete({{ book['book_id'] }});">削除</a>

この記述にVScode上の以下の問題点が指摘

<a href=”#” class=”btn btn-danger” onclick=”confirmDelete({①{ book②[‘book_id’] ③}④});”>削除</a>

この記述の①の部分でProperty assignment expected.javascript

この記述の②の部分で’,’ expected.javascript

この記述の③の部分で’:’ expected.javascript

この記述の④の部分で’,’ expected.javascript

setting.jsonファイルに、以下の記述を追加することで解決

"files.associations": {
    "*.html": "jinja-html"
}

"files.associations" を追記することで、VS Codeが .html ファイルを jinja-html として認識するようになり、Jinja2テンプレートの埋め込みが適切にハンドリングされるようになったようです。

json編集時も問題点が指摘されたため、その内容にハマったのであえてメモ

上記文言を追加した後、Expected commaの内容がどこの部分なのか、毎回この手の内容に時間を費やすので、いい加減気づきたい。

全体のjson記述

{
    "[python]": {
        "editor.formatOnType": true
    }, # ⇒これが抜けていた。
    "files.associations": {
        "*.html": "jinja-html"
    }
}

コメントを残す