J'ai eu ce problème il y a quelque temps. Imaginez que vous ayez un tableau comme celui-ci:
data = {
'user': 'admin',
'password': 'admin1234',
'role': 'admin',
'group': 'root',
'profile': 'admin',
'control': 'all',
'level': 1,
'session': '#DFSFASADASD02',
'pre_oa': 'PRE-OA',
'hepa_oa': 'HEPA-OA',
'pre_ra': 'HEPA-RA',
'hepa_ra': 'HEPA-RA',
'deodor_ra': 'DEODOR-RA'
}
Donc, vous voulez afficher ces données sur deux lignes, mais supprimez le mot de passe de cette liste. À cette fin, diviser en 2 tableaux sera facile avec le slice
filtre. Cependant, nous devons supprimer le mot de passe. Pour cette raison, j'utilise cet extrait. L'idée est de mettre tous les éléments inférieurs à la data
taille des éléments divisée par 2. Pour calculer cela, nous utilisons le filtre length
. Maintenant, pour obtenir l'index de l'élément courant que nous utilisons loop.index
. Et enfin nous * poussons un élément associatif dans le tableau de gauche ou de droite. Un tableau associatif a deux composants key
et value
. Pour référencer une clé de tableau dans twit, nous opérateur ()
et nous utilisons le merge
filtre pour pousser dans le tableau comme indiqué ici{% set left_list = left_list|merge({ (key): value }) %}
C'est la solution complète.
{% set left_list = {} %}
{% set right_list = {} %}
{% set limit = data|length // 2 %}
{% for key, value in data|cast_to_array %}
{% if key != 'password' %}
{% if loop.index <= limit %}
{% set left_list = left_list|merge({ (key): value }) %}
{% else %}
{% set right_list = right_list|merge({ (key): value }) %}
{% endif %}
{% endif %}
{% endfor %}
{% for key, value in left_list %}
<p>
<label for="{{key}}">{{key}}</label>
<input type="text" name="{{key}}" id="{{key}}" value="{{value}}"
class="text ui-widget-content ui-corner-all">
</p>
{% endfor %}