Короткий ответ - да переменная self
специфичен для Page
. Более точный ответ заключается в том, что для моделей, отличных от Page
, сама идея ответа, полученная от модели, является заблуждением ...
Обычная модель Django ничего не знает о шаблонах или обслуживает ответы HTTP - это поведение специфично для модели Wagtail Page
. (Более конкретно: Page
модель реализует метод serve(request)
, которая делает шаблон, который имеет определенный набор переменных, доступных для него, в том числе и page
self
.)
Если вы следуете обычным правилам Django, вы, вероятно, есть вид функции, как это:
def show(request, object_id):
my_page = SomeModel.objects.get(id=object_id)
return render(request, 'some_template.html', {
'page': my_page,
})
Здесь ответ шаблон исходит от вызова render
, и это полностью зависит от вас, какие переменные вы сделать доступными на этом шаблоне. В этом случае переменная {{ page }}
будет доступна на шаблоне просто потому, что это то, что мы передали в качестве последнего параметра в render
. Это полностью не зависит от всего, что происходит в SomeModel
- эта модель не влияет на процесс рендеринга шаблона.
Извините, да, я понимаю, что все, что попадает в шаблон, передается ему. Просто пытаюсь проверить, что '{{self}}' поступает из родительского класса 'Page' (а не каким-то другим), и что я не должен удивляться, если он« отсутствует »из ответа не-Wagtail. Спасибо за освещение/разработку! – Jheasly