Uncaught ReferenceError: False не определено в шаблоне Python django - PullRequest
0 голосов
/ 29 мая 2019

Я получаю ошибку Uncaught ReferenceError: False is not defined при попытке получить доступ к переменной словаря Python в шаблоне Django.

Я пытался экранировать с safe, но он не работает:

result = {'test1' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}], 'test2' : [{'var1': 'PLANNED', 'var2': 'description', 'var3': False},{'var1':'PLANNED', 'var2':'description', 'var3': True}]}
return render(request, 'users/team.html', {'team' : team, 'result ' : result })

Я обращаюсь к этому в своем HTML, как показано ниже:

var params= {{result |safe}};

Как я могу присвоить этот результат переменной в шаблоне Django?

1 Ответ

0 голосов
/ 29 мая 2019

Проблема в том, что вы эффективно пишете var params = ... False ...; на JavaScript.Однако false в JS записывается как false, а не False!Обратите внимание на разницу в капитализации.В результате виртуальная машина JS пытается частично присвоить значение переменной False переменной params.К сожалению, вы не определили переменную с именем False!Следовательно, ReferenceError.

Один из подходов к решению этой проблемы - создание цепочки с фильтром json_script:

{{ result|json_script:"params-data" }}
<script>
    var value = JSON.parse(document.getElementById('params-data').textContent);
</script>

Другой подход заключается в ручном кодировании /расшифруйте result как JSON.например,

import json
return render(request, 'users/team.html', {'team' : team, 'result ' : json.dumps(result) })

и

var params = JSON.parse('{{result|safe}}');

Первый вариант явно предпочтительнее из-за его краткости и более простой природы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...