Доступ к python dic в виде шаблона с помощью Django - PullRequest
1 голос
/ 03 июня 2019

Когда я хочу передать DIC-файл из views.py в шаблон, он отображается неправильно.

Я пытался использовать | safe и JSON.parse(), но оба не решили проблему. Похоже, что ошибка уже может произойти в views.py.


views.py

participant_per_challenge = {}

for participant in challenge_participants:

        if str(participant.challenge.id) in participant_per_challenge:
            participant_per_challenge[str(participant.challenge.id)].append(participant.player.userid)
        else:
            participant_per_challenge[str(participant.challenge.id)] = []
            participant_per_challenge[str(participant.challenge.id)].append(participant.player.userid)


my_dict = {
 'challenges' : challenges,
 'challenge_participants' : challenge_participants,
 'unique_participants': unique_participants,
 'participant_per_challenge': participant_per_challenge,

 }

return render(request, "challengeview/index.html", context=my_dict)

вот пример dic из views.py

{
  "1": [
    "bc5ac2b77a2d4b9e90ff4aa6012a4891",
    "a61254636e5f432292459b406cf55f47"
  ],
  "2": [
    "a61254636e5f432292459b406cf55f47",
    "bc5ac2b77a2d4b9e90ff4aa6012a4891"
  ]
}


index.html

<script type="text/javascript">
var player_per_challenge = "{{ participant_per_challenge|safe}}";
console.log(typeof player_per_challenge); //THIS RETURNS STRING

</script>

Ожидаемый результат: объект JSON, к которому я могу получить доступ к параметрам


Фактический результат: строка. JSON.parse() не работает также («Uncaught SyntaxError: неожиданный токен с JSON.parse»).

1 Ответ

0 голосов
/ 03 июня 2019

Вы должны закодировать dict в JSON в вашем представлении и использовать его (без кавычек) в вашем коде Javascript. Например:

views.py

import json
...
'participant_per_challenge': json.dumps(participant_per_challenge),

тогда

index.html

var player_per_challenge = {{ participant_per_challenge | safe}};
...