1
resposta

Usar dicionário no Template

Olá boa noite,

Estou com dúvida na parte de passar os dados para o dicionário utilizando a função render.

A forma proposta em aula foi a seguinte:

receitas ={ 1:'Lasanha', 2:'Sopa Legumes', 3:'Macarrão', } dados = {'nome_das_receitas':receitas}

return render(request, 'index.html', dados)

 {% for k,v in nome_das_receitas.items %}

A princípio, vejo que foram criadas muitas variáveis sem necessidade. Quando tento utilizar o código abaixo não consigo ter sucesso:

receitas ={ 1:'Lasanha', 2:'Sopa Legumes', 3:'Macarrão', } dados = {'nome_das_receitas':receitas}

return render(request, 'index.html', receitas)

 {% for c in receitas.items %}

Existe alguma regra específica para trabalhar com dicionários dentro de templates? Realmente a forma explicitada em aula seria a mais simples?

1 resposta

Vamos analisar o código da aula:

def index(request):

    receitas = {
        1:'Lasanha',
        2:'Sopa de legumes',
        3:'Sorvete'
    }

    dados = {
        'nome_das_receitas' : receitas
    }
    return render(request, 'index.html',dados)

def receita(request):
    return render(request, 'receita.html')

Veja que o dicionário receitas foi utilizado dentro do index. Você pode criar quantas variáveis quiser dentro de view, porém essas variáveis só vai existir no template se você passar no contexto. O contexto criado é a variável dados. Se você fizer:

return render(request, 'index.html',{'receitas': receitas})

Você vai conseguir acessar o receitas no template. O primeiro parâmetro é o nome que vai ter no template e o segundo é o valor desse parâmetro. Você pode escolher qualquer nome. Por exemplo, se você fizer:

return render(request, 'index.html',{'nome_aleatorio': receitas})

No template, você vai acessar as receitas através do nome_aleatorio

for item in nome_aletoario