Как импортировать данные из django .models, чтобы использовать в javascript? - PullRequest
1 голос
/ 26 февраля 2020

Я пытаюсь импортировать словарь python из моделей и манипулировать / печатать его свойства в Javascript. Однако кажется, что ничего не распечатывается, и я не получаю никаких сообщений об ошибках.

Views.py

from chesssite.models import Chess_board
import json

def chess(request):
    board = Chess_board()
    data = json.dumps(board.rep)
    return render(request, 'home.html', {'board': data})

Здесь board.rep - это словарь python {"0a": 0, "0b": 0, "0 c": "K0"} - в основном шахматная доска

home. html

<html>
   <body>
      {% block content %}
         <script>
            for (x in {{board}}) {
               document.write(x)
            }
         </script>
      {% endblock %}
   </body>
</html>

Я также был бы очень признателен за некоторые советы по отладке! Заранее спасибо, Алекс

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Django по умолчанию экранирует вещи как HTML, и это превратит " в @quot;. Попробуйте изменить {{board}} на {{board|safe}}, чтобы избежать экранирования html. Кроме того, в представлении вы можете заключить строку в mark_safe(), которая находится в django.utils.safestring, чтобы указать, что строку не следует экранировать.

1 голос
/ 26 февраля 2020

Для передачи данных между django и javascript, сбросьте данные в представлении django и загрузите в переменную javascript. Старайтесь избегать интерполяции django с языковыми конструкциями javascript. Это небезопасно, подвержено ошибкам и может вызвать сложности.

data = json.dumps(board.rep)

в шаблоне

const data = JSON.parse('{{ data|safe }}')
// use normal javascript here. 'data' is a javascript array

for (let x of data) {
    document.write(x)
}
...