Ich hatte dieses Problem vor einiger Zeit. Stellen Sie sich vor, Sie haben ein Array wie dieses:
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'
}
Sie möchten diese Daten also in zwei Zeilen anzeigen, aber das Kennwort aus dieser Liste entfernen. Zu diesem Zweck ist die Aufteilung in zwei Arrays mit dem slice
Filter einfach . Wir müssen jedoch das Passwort entfernen. Aus diesem Grund verwende ich dieses Snippet. Die Idee ist, alle Elemente kleiner als die data
Elementgröße geteilt durch 2 zu setzen. Um dies zu berechnen, verwenden wir den Filter length
. Nun erhalten wir den Index des aktuellen Elements, das wir verwenden loop.index
. Und schließlich * verschieben wir ein assoziatives Element in das linke oder rechte Array. Ein assoziatives Array besteht aus zwei Komponenten key
und value
. Um auf einen Array-Schlüssel in twit zu verweisen, operieren wir ()
und verwenden den merge
Filter, um wie hier gezeigt in das Array zu pushen{% set left_list = left_list|merge({ (key): value }) %}
Dies ist die Komplettlösung.
{% 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 %}