1
resposta

Dicionario passado como parâmetro

Olá professor.

Primeiramente só tenho a parabeniza-los pelo curso, didática muito boa. Estou revisando algumas coisas em Django, e me surgiu uma duvida.

Em views.py, sempre que renderizamos uma pagina, depois de realizar algum tipo de processamento, passamos como parâmetro um dicionario. Como no exemplo desta aula

return render(request, 'buscar.html', dados)  # Onde 'dados' é o dicionario

Minha dúvida, pode ser simples rsrs, mas gostaria de entender: No caso desta aula, a chave do valor do dicionario é 'receitas', Como que o django busca exatamente esta chave deste dicionario? Fazendo uns testes aqui, quando eu tiro alguma letra da chave, a minha busca deixa de funcionar.

Obrigado.

1 resposta

Oi Marcos, tudo bem com você?

Ótima pergunta :)

Internamente o django verá se o dicionário passado por contexto contém aquela chave e caso tenha, ele nos retornará o valor dela e caso não tenha, ele nos retornará None. É algo similar ao código abaixo:

def verifica_chave(key_acessada_no_template):

    dicionario_passado_para_o_contexto = {
        'nome': 'Marcos',
        'profissao': 'Analista de PVD',
        'sobrenome': 'Lima'
    }

    for item in dicionario_passado_para_o_contexto:
        if key_acessada_no_template in item:
            return dicionario_passado_para_o_contexto[key_acessada_no_template]
    return None


valor_da_chave = verifica_chave('profissao')
print(valor_da_chave)

Um teste que você pode fazer no seu template, é verificar se uma determinada chave inexistente é None. Por exemplo:

 {% if nome is None %}
     <h1>Chave inexistente</h1>
 {% endif %}

Mas, caso você teste se receitas é None, observe que não entrará no trecho do if:

{% if receitas is None %}
     <h1>Chave inexistente</h1>
{% endif %}

Fico à disposição para qualquer dúvida. Abraços e bons estudos!