J'ai cette boucle for sur mon modèle python pour remplir un tableau de valeurs:

labels: [{% for bftimes in dataBF.buffers.0.times %} "{{ bftimes }}", {% endfor %}]

Je voudrais savoir si je peux utiliser une variable int comme index au lieu de l'écrire directement, comme le montre le code ci-dessus.

Je dois utiliser l'index de la valeur sélectionnée d'une liste déroulante:

//returns the index of the selected value
document.getElementById("buffer").selectedIndex
1
Guilherme Torres 11 mars 2019 à 01:49

2 réponses

Meilleure réponse

La question a besoin de plus de contexte pour nous aider à comprendre votre objectif. Il semble que vous mélangez python avec des structures de données javascript.

Ma recommandation générale est de préparer d'abord la structure de données python à ce dont vous aurez besoin, puis de la convertir en json. La boucle dans le langage de modèle Django ne doit être utilisée que sur des cas simples.

Si vous utilisez django> = 2.1, vous pouvez utiliser la balise de modèle json-script

 {{ data|json_script:"my-data" }}

https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#json-script

Sinon, vous pouvez utiliser

# views.py
import json
def foo(request):
    dataBF = {"a": [{"c": [1,2,3,1,1]},{"d": [1,2,3,1,1]}]}
    # here you can manipulate the data accordingly to what you need
    data = json.dumps(dataBF)
    return render(request, "index.html", context={"data": data})

Côté modèle

<script>
    const datajs = {{ data | safe }};
</script>

Le datajs est un objet javascript avec lequel vous pouvez travailler.

J'ai fait un exemple que vous pouvez vérifier https://repl.it /@IvanPereira/python-to-javascript-django-template

0
balsagoth 13 mars 2019 à 15:18

Vous pouvez le faire de 2 manières.

  1. Stockez toutes les valeurs dans une liste, que JavaScript considérera comme un tableau json, et bouclez en utilisant JavaScript lui-même. De cette façon, vous ne pourrez pas mettre à jour les enregistrements du serveur et toutes les valeurs qui doivent être bouclées doivent être pré-extraites.

  2. Vous pouvez utiliser l'appel AJAX pour transmettre l'index sélectionné à partir de JavaScript et renvoyer le nouveau tableau et le mettre à jour dans le modèle à l'aide de JavaScript lui-même.

0
Anuj TBE 13 mars 2019 à 02:40