Dictonary in List

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Prinz_Monty
User
Beiträge: 18
Registriert: Mittwoch 24. Oktober 2018, 09:43

Jemand eine Idee wie ich auf die dicts zugreife irgendwie sind die in einer liste verbastelt. Zumindest sagt mir das der PyCharm Debuger. Habs zwar schon mal mit append und dann wieder in eine neue liste zupacken hinbekommen aber suche einen besseren weg.

Code: Alles auswählen

sdd = {list} <class 'list'>: [{'domain_id': '1', 'sys_userid': '1', 'sys_groupid': '2', 'sys_perm_user': 'riud', 'sys_perm_group': 'ru', 'sys_perm_other': '', 'server_id': '1', 'ip_address': '*', 'ipv6_address': '', 'domain': 'simsalabim.de', 'type': 'vhost', 'parent_d
 0 = {dict} {'domain_id': '1', 'sys_userid': '1', 'sys_groupid': '2', 'sys_perm_user': 'riud', 'sys_perm_group': 'ru', 'sys_perm_other': '', 'server_id': '1', 'ip_address': '*', 'ipv6_address': '', 'domain': 'simsalabim.de', 'type': 'vhost', 'parent_domain_id': '0', 'vhost_type': 'name', 'document_root': '/var/www/clients/client1/web1', 'web_folder': '', 'system_user': 'web1', 'system_group': 'client1', 'hd_quota': '-1', 'traffic_quota': '-1', 'cgi': 'n', 'ssi': 'n', 'suexec': 'y', 'errordocs': '1', 'is_subdomainwww': '1', 'subdomain': 'www', 'php': 'no', 'ruby': 'n', 'python': 'n', 'perl': 'n', 'redirect_type': None, 'redirect_path': None, 'seo_redirect': None, 'rewrite_to_https': 'n', 'ssl': 'n', 'ssl_letsencrypt': 'n', 'ssl_letsencrypt_exclude': 'n', 'ssl_state': None, 'ssl_locality': None, 'ssl_organisation': None, 'ssl_organisation_unit': None, 'ssl_country': None, 'ssl_domain': None, 'ssl_request': None, 'ssl_cert': None, 'ssl_bundle': None, 'ssl_key': None, 'ssl_action': None, 'stats_...
 1 = {dict} {'domain_id': '2', 'sys_userid': '1', 'sys_groupid': '3', 'sys_perm_user': 'riud', 'sys_perm_group': 'ru', 'sys_perm_other': '', 'server_id': '1', 'ip_address': '*', 'ipv6_address': '', 'domain': 'hallmax.de', 'type': 'vhost', 'parent_domain_id': '0', 'vhost_type': 'name', 'document_root': '/var/www/clients/client2/web2', 'web_folder': '', 'system_user': 'web2', 'system_group': 'client2', 'hd_quota': '-1', 'traffic_quota': '-1', 'cgi': 'n', 'ssi': 'n', 'suexec': 'y', 'errordocs': '1', 'is_subdomainwww': '1', 'subdomain': 'www', 'php': 'no', 'ruby': 'n', 'python': 'n', 'perl': 'n', 'redirect_type': None, 'redirect_path': None, 'seo_redirect': None, 'rewrite_to_https': 'n', 'ssl': 'n', 'ssl_letsencrypt': 'n', 'ssl_letsencrypt_exclude': 'n', 'ssl_state': None, 'ssl_locality': None, 'ssl_organisation': None, 'ssl_organisation_unit': None, 'ssl_country': None, 'ssl_domain': None, 'ssl_request': None, 'ssl_cert': None, 'ssl_bundle': None, 'ssl_key': None, 'ssl_action': None, 'stats_pas...
Mögen hätt ich schon wollen, aber dürfen habe ich mich nicht getraut. *Karl Valentin
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Prinz_Monty: In der Python-Dokumentation gibt es ein Tutorial.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Prinz_Monty hat geschrieben: Montag 5. November 2018, 22:26Jemand eine Idee wie ich auf die dicts zugreife irgendwie sind die in einer liste verbastelt.
Ich bin mir nicht sicher ob ich die Frage korrekt verstanden habe. Möchtest du wissen wie du auf Listenelemente zugreifen kannst? Da kommt ziemlich weit vorne im offiziellen Tutorial: Lists
Benutzeravatar
Prinz_Monty
User
Beiträge: 18
Registriert: Mittwoch 24. Oktober 2018, 09:43

Hallo,

ja ich werde mir später das mit den Listen noch mal genauer anschauen. Mein Problem ist das Ich eine Liste in einer Dict habe

Code: Alles auswählen

 dict{ list ['Blub', 'Bla' ] } 
Mögen hätt ich schon wollen, aber dürfen habe ich mich nicht getraut. *Karl Valentin
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist kein Python-Code. Und was genau ist das Problem? Wenn du einen Wert aus einem dict willst, dann musst du doch nur mit dem Schluessel darauf zugreifen. Das mit den Dicts kannst du dir ja jetzt schonmal genauer anschauen.
Benutzeravatar
Prinz_Monty
User
Beiträge: 18
Registriert: Mittwoch 24. Oktober 2018, 09:43

Das nur ein beispiel wie es bei mir im Debuger aussieht. Ist gut ich schau mal ;)
Mögen hätt ich schon wollen, aber dürfen habe ich mich nicht getraut. *Karl Valentin
Benutzeravatar
Prinz_Monty
User
Beiträge: 18
Registriert: Mittwoch 24. Oktober 2018, 09:43

So habe es hinbekommen. Hab irgendwie in die falsche Richtung gedacht.

Grob erklärt mir liefert eine API JSON Daten, diese werden in einer Methode als Dict. gespeichert. Aus diesem ziehe ich mir bestimmte Values (domain['domain_id']) und hänge sie mit append() an die Liste "domains". Diese wollte ich dann im Frontend mit Django ausgeben. Naja hab mich ordentlich verrannt. :mrgreen:

Hier nun meine Lösung:

Code: Alles auswählen

def domains_by_status(request):
    domain_data = connection_api().sites_web_domain_get_all("y")



    domains = []



    for domain in domain_data:
        domains.append({'domain_id': domain['domain_id'],

                        'name': domain['domain'],
                        'ssl': domain['ssl'],
                        'le': domain[ 'ssl_letsencrypt'],
                        'added_date': domain['added_date'],
                        'sys_groupid': domain['sys_groupid'],
                        'active': domain['active'],
                        })



    return render(request, 'domain_cm/domains.html', {'items': domains})
Ausgabe im Frontend:

Code: Alles auswählen

{% for item in items %}
 
      <p>ID: {{ item.domain_id }} Domain: {{ item.name }} Added: {{ item.added_date }}</p>

{% endfor %}
Ausgabe:

ID: 1 Domain: simsalabim.de Added: 2018-10-31
ID: 2 Domain: hallmax.de Added: 2018-10-31
ID: 3 Domain: achkommschon.de Added: 2018-10-31
Mögen hätt ich schon wollen, aber dürfen habe ich mich nicht getraut. *Karl Valentin
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

Und was ist jetzt der Unterschied zwischen domain_data und domains außer dass ssl_letsencrypt in ein kryptisches le umbenannt wird, dass sich der Aufwand das zu "konvertieren" lohnt?

Das wäre einfacher:

Code: Alles auswählen

def domains_by_status(request):
    domains = connection_api().sites_web_domain_get_all("y")


    return render(request, 'domain_cm/domains.html', {'items': domains})
Benutzeravatar
Prinz_Monty
User
Beiträge: 18
Registriert: Mittwoch 24. Oktober 2018, 09:43

Da hast du vermutlich recht. Musste erst verstehen wie ich mit der Template Engine auf die Werte zugreife. Ich lerne halt noch. Aber hey war es halt ne nette Übung vielleicht brauch ich es ja doch mal so.
Mögen hätt ich schon wollen, aber dürfen habe ich mich nicht getraut. *Karl Valentin
Antworten