Soy muy nuevo en Django y estoy tratando de averiguar por qué puedo llamar a las claves en un dictado en mi plantilla como se esperaba, pero recorrer el dictado no produce ningún texto ni ningún mensaje de error. No quiero codificar los nombres de las claves (es decir, debajo de msgid en mi plantilla, porque el dict es dinámico y solo quiero recorrerlo).
vistas.py
class Pymat_program(View): def get(self, request, *args, **kwargs): selected_xml = 'a_directory_to_my_file' smsreport_dict = self.parse_xml_file(selected_xml) html = self.populate_html_text(smsreport_dict) return HttpResponse(html) def populate_html_text(self, smsreport_dict): t = get_template('template2.html') html = t.render(smsreport_dict) return htmlplantilla2.html
<p>MSGID: {{ msgid }}</p> <p> Begin {% for key, value in smsreport_dict %} <tr> <td> Key: {{ key }} </td> </tr> {% endfor %} </p>EndEn template2.html puede ver el valor msgid (uno de varios valores en smsreport_dict) que se llama, que se muestra en mi página. Pero por alguna razón, el bucle smsreport_dict no produce texto. ¿Dónde me estoy equivocando?
smsreport_dict debe estar dentro del Context que usa para representar la plantilla:
... html = t.render(Context({"smsreport_dict": smsreport_dict})) ... Además, olvidó llamar a .items al iterar a través del dictado en la plantilla:
{% for key, value in smsreport_dict.items %} ...