Na atividade "ajudando alguém", aula 05 do curso de Django, temos o seguinte enunciado:
--- INÍCIO DO ENUNCIADO ---
Ao longo do curso de Django da Alura, uma das pessoas matriculadas se deparou com um comportamento estranho ao acessar a página em desenvolvimento, que exibiu o seguinte comportamento:
O trecho de código da index:
<div class="receipe-content">
<a href="{% url 'receita' receita.id %}">
<h5>{{ receita.nome_receita }}</h5>
</a>
</div>
O trecho de código da views.py
:
def receita(request):
receita = get_object_or_404(Receita, pk=receita_id)
receita_a_exibir = {
'receita' : receita
}
O trecho de código da urls.py
:
urlpatterns = [
path('', views.index, name='index'),
path('<int:receita_id>', views.receita, name='receita')
]
A partir disso, onde está o erro e porque temos este comportamento?
--- FIM DO ENUNCIADO ---
E as seguintes alternativas (para marcar as 3 corretas):
A. A solução seria alterar a função receita
passando o id argumento.
B. Este erro ocorre por conta do código encontrado no views.py
.
C. Este erro ocorre por conta do código encontrado no index.html
.
D. Este erro ocorre por conta do código encontrado no urls.py
.
E. A solução seria alterar a tag de <h5>{{receita.nome_receita}}</h5>
para <h5>{{receita.nome_receita == receita_id}}</h5>
F. A solução seria adicionar como argumento da função receita
, o receita_id
.
Segundo o gabarito, as alternativas A, B e F são as corretas. No entanto, não concordo com a A, pois o nome do argumento é receita_id
, e não id
(e aliás é exatamente isso o que a alternativa F versa). Inclusive na explicação da resposta da alternativa A, aparece essa figura, mostrando o receita_id
:
Na explicação das alternativas A e F, aparecem em ambas esse texto:
Certo! É necessário indicar o
id
da receita como argumento da função. Dessa forma, o erro não ocorrerá mais.
No entanto, apenas na alternativa A temos a figura.
Pode até ser que seja um problema de interpretação de texto da minha parte, mas se for esse o caso, talvez a redação da alternativa A mereça uma revisão, até porque expressão "passando o id argumento" não está escrita num português bem claro. Eu havia interpretado isso como se a A quisesse dizer que o nome do argumento deveria ser id
(em contraste com a F que diz que deveria ser receita_id
), e não que a A apenas estava dizendo que um argumento referente a algum tipo id estava faltando.
Na verdade, acredito que a alternativa A nem deveria estar ali, pois as alternativas B e F já são suficientes.