Почему теги скриптов автоматически преобразуют & в &?

У меня возникла странная проблема, с которой я раньше не сталкивался. Мой html генерируется через шаблоны Django, и состоит из некоторого базового кода, который инициализирует DataTable на основе строки запроса с некоторыми GET переменными (например, "/report1/?filter1=abc&filter2=def").

Однако, внезапно, когда я записываю переменную шаблона Django внутри тега <script></script>, & преобразуется в &amp;, вот так:

<script>
var link = "/report1/?filter1=abc&amp;filter2=def"
</script>

Однако, если строка не находится внутри тега script, она выводится так, как было задумано изначально: "/report1/?filter1=abc&filter2=def"

Это основано на точно такой же переменной шаблона Django без изменений.

Что в script вызывает кодировку &? Это происходит в текущих версиях Edge и Firefox. Django явно ничего не знает о тегах <script></script>, поэтому это должно быть особенностью браузера.

Есть идеи, как предотвратить это? Это то, что, похоже, не происходило в прошлом.

Спасибо!

Для справки, мой шаблон Django выглядит примерно так:

{{ string }}<br>
<script>
var link = "{{ string }}"
</script>

Ладно, моя ошибка, когда я обновился до последних версий, я забыл понять, что строки должны быть помечены |safe теперь

Конечно, я понял это только после написания этого поста.

Вернуться на верх