2017-12-14 2 views
0

Ich habe folgendes Wörterbuch:Anzeige Wörterbuch-Datei in for-Schleife in django Vorlage

d = {'21': 'test1', '11': 'test2'} 

{% with '18 17 16 15 14 13 12 11 21 22 23 24 25 26 27 28' as list_upper %} 
{% for x in list_upper.split %} 

    {% if x in dental_position %} 
    <input type="text" placeholder = "{{ x }}" class="form-control" name="tooth[]" value="{{display dict.value here}}"> 
    {% else %}<input type="text" placeholder = "{{ x }}" class="form-control" name="tooth[]"> 
    {% endif%} 


{% endfor %} 

Ich möchte die d[value] innerhalb Texteingabe Wertattribut anzuzeigen, wenn Werte von d[key] in list_upper

gefunden ist, wie Ich rufe {% if d.keys in x %} in Django Vorlage?

+1

Sie benötigen hier eine Django-Vorlage [tag] (https://docs.djangoproject.com/de/2.0/howto/custom-template-tags/). Es wird dieses Problem ziemlich trivial machen. – MCBama

+0

und gibt es einen Grund, dass Sie 'list_upper' in Ihrem Kontext nicht definiert haben? Sie müssten nicht zu der verrückten Codierung in Ihrer Vorlage, die Sie für Ihre for-Schleife tun. – MCBama

Antwort

1

eine Tag-Datei wie folgt erstellen:

# tags.py 
def is_dict_key(key, d): 
    return key in d 

def get_dict_value(d, key): 
    try: 
     return d[key] 
    except KeyError as e: 
     print(e) 
     return None 

Unter der Annahme Ihrer Ansicht nach in Zusammenhang geht das wie folgt aussieht:

context = { 
    'dental_position': {21: 'test1', 11: 'test2'} 
    'list_upper': [18, 17, 16, 15, 14, 13, 12, 11, 21, 22, 23, 24, 25, 26, 27, 28] 
} 

Dann in Ihrer Vorlage können Sie dies tun:

{% load tags %} 
{% for x in list_upper %} 

    {% if x|is_dict_key:dental_position %} 
     <input type="text" placeholder = "{{ x }}" class="form-control" name="tooth[]" value="{{dental_position|get_dict_value:x}}"> 
    {% else %} 
     <input type="text" placeholder = "{{ x }}" class="form-control" name="tooth[]"> 
    {% endif%} 


{% endfor %} 

Ich mache das alles von meinem Kopf aus, also könnte da irgendwo ein Formatierungs- oder Syntaxfehler drin sein, aber nach th Die Dokumentation, die ich zuvor verlinkt habe, sollte Sie dahin bringen, wo Sie sein müssen.

+0

Dies ist das erste Mal, dass ich Template-Tags verwende. Vielen Dank für Ihre sofortige Antwort. Für mich geht das. –

+0

@CarlosFabiera Froh, dass es funktioniert hat. Ich steckte es in ein eigenes Testprojekt und erkannte, dass ich ein paar Änderungen vornehmen musste, um es gut spielen zu lassen. Ich nehme an, du musstest das gleiche xD machen – MCBama