2017-01-11 7 views
0

Wagtail новичок здесь, шаблонный ответ, полученный из класса models.Model на основе Django, и замечаю, что он имеет имеющуюся шаблонную переменную {{ page }}, но не {{ self }}.Имеет ли переменная шаблона Wagtail "self" на страницах (Django), которые не являются подклассом Страница?

Просто ищет подтверждение того, что это связано с тем, что переменная шаблона {{ self }} доступна только для классов, которые расширяют Page. Не находите ничего в документах об этом.

Спасибо заранее,
Джон

ответ

0

Короткий ответ - да переменная self специфичен для Page. Более точный ответ заключается в том, что для моделей, отличных от Page, сама идея ответа, полученная от модели, является заблуждением ...

Обычная модель Django ничего не знает о шаблонах или обслуживает ответы HTTP - это поведение специфично для модели Wagtail Page. (Более конкретно: Page модель реализует метод serve(request), которая делает шаблон, который имеет определенный набор переменных, доступных для него, в том числе и pageself.)

Если вы следуете обычным правилам 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 - эта модель не влияет на процесс рендеринга шаблона.

+0

Извините, да, я понимаю, что все, что попадает в шаблон, передается ему. Просто пытаюсь проверить, что '{{self}}' поступает из родительского класса 'Page' (а не каким-то другим), и что я не должен удивляться, если он« отсутствует »из ответа не-Wagtail. Спасибо за освещение/разработку! – Jheasly

 Смежные вопросы

  • Нет связанных вопросов^_^