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 i
variable 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 your i
variable.
Syntax for this would look something like this:
{% with i|get_variable:forloop.counter0 as new_variable_name %}
https://docs.djangoproject.com/en/4.1/howto/custom-template-tags/#writing-custom-template-filters