I have a context built in this way:
def end(request):
numero_debitori = request.session['numero_debitori']
dati_totali = {'numero_debitori': numero_debitori}
if request.session['tipo_creditore'] == 'PF':
dati_totali['creditore'] = {
'tipo': 'Persona Fisica',
'dati': {
'nome': request.session[f'nome'],
'cognome': request.session[f'cognome'],
'luogo_di_nascita': request.session[f'luogo_di_nascita'],
'data_di_nascita': request.session[f'data_di_nascita'],
'comune_di_residenza': request.session[f'comune_di_residenza'],
'indirizzo_di_residenza': request.session[f'indirizzo_di_residenza'],
'email': request.session[f'email'],
'pec': request.session[f'pec'],
'codice_fiscale': request.session[f'codice_fiscale'],
'partita_iva': request.session[f'partita_iva'],
}
}
elif request.session['tipo_creditore'] == 'PJ':
dati_totali[f'creditore'] = {
'tipo': 'Persona Giuridica',
'dati': {
'denominazione_sociale': request.session[f'denominazione_sociale'],
'comune_sede_principale': request.session[f'comune_sede_principale'],
'indirizzo_sede_principale': request.session[f'indirizzo_sede_principale'],
'email': request.session[f'email'],
'pec': request.session[f'pec'],
'codice_fiscale': request.session[f'codice_fiscale'],
'partita_iva': request.session[f'partita_iva'],
}
}
for i in range(numero_debitori):
if request.session[f'tipo_{i}'] == 'PF':
dati_totali[f'debitore_{i}'] = {
'tipo': 'Persona Fisica',
'dati': {
'nome': request.session[f'nome_{i}'],
'cognome': request.session[f'cognome_{i}'],
'luogo_di_nascita': request.session[f'luogo_di_nascita_{i}'],
'data_di_nascita': request.session[f'data_di_nascita_{i}'],
'indirizzo_di_residenza': request.session[f'indirizzo_di_residenza_{i}'],
'codice_fiscale': request.session[f'codice_fiscale_{i}'],
'partita_iva': request.session[f'partita_iva_{i}'],
}
}
elif request.session[f'tipo_{i}'] == 'PJ':
dati_totali[f'debitore_{i}'] = {
'tipo': 'Persona Giuridica',
'dati': {
'denominazione_sociale': request.session[f'denominazione_sociale_{i}'],
'sede_principale': request.session[f'sede_principale_{i}'],
'codice_fiscale': request.session[f'codice_fiscale_{i}'],
'partita_iva': request.session[f'partita_iva_{i}'],
}
}
context = {'dati_totali': dati_totali}
return render(request, 'end.html', context)
Inside end.html I'm trying to access to f'debitore_{i}' in this way but nothing was shown:
{% for i in dati_totali %}
{% with debitore_|add:i as debitore %}
{{dati_totali.debitore.tipo}}
{% endwith %}
{% endfor %}
I don't know what's wrong with this code. I also tried to print the data inside the terminal to check if the data inside the session does exists and yes, they exists.
The
ivariable in your template is not referencing the index.Have a look, and just show
{{i}}as text, see the output.To reference the index of a for loop in a django template, you could use
{{forloop.counter0}}or{{forloop.counter}}inside of the loop.{{forloop.counter0}}starts at the number 0, respectively{{forloop.counter}}starts at one.You could probably do what you're doing with a custom template filter, passing in the
forloop.counter0, and then getting the right index from yourivariable. Syntax for this would look something like this:https://docs.djangoproject.com/en/4.1/howto/custom-template-tags/#writing-custom-template-filters