Имеется такой html код:
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
И есть одна непонятка с самой переменной. Объект error message я нашел только в этом python коде, после except:
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
Объясните пожалуйста две переменные: question и error message. Они в кавычках и находятся в фигурных скобках. Похожи на словари, но я не уверен. Объясните, пожалуйста в чем их смысл, почему бы не создать обычную переменную и просто ссылаться на неё?
И особенно этот код:
'question': question
, который находится среди представлений в файле views.py, как я понял, это выражение ссылается на django модель под названием question. То есть, в приложении существует два объекта с именем question. А что будет если мы будем ссылаться на имя question из html файла? Python будет искать код среди моделей в models.py и найдет модель question или он будет искать среди представлений в views.py и найдет переменную 'question': question, которая все равно отсылает нас к модели и в чем же смысл?