Почему не получается получить доступ к родительской переменной в классе?

Добрый день, к примеру есть у нас такой CBV
class Post_Detail(TemplateView):
    template_name = 'blog/post_detail.html'

Почему я не могу получить доступ к template_name, а могу только переопределить? Почему вот так
class Post_Detail(TemplateView):
    template_name = super().template_name

не получается до неё достучаться? Как обратиться именно к родительской?
P.S. super без параметров, подразумеваем что у нас 3 версия питона, с параметрами тоже не работает
  • Вопрос задан
  • 317 просмотров
Пригласить эксперта
Ответы на вопрос 3
winordie
@winordie
Лучшая документация -- исходники
Есть метод get_template_names где можно получить текущий template_name по self.template_name. Переопределяйте именно этот метод.

Пример:
class CategoryView(TemplateView):
    template_folder = 'build'
    template_name = 'build/category.html'
    ...
    def get_template_names(self):
        template = self.template_name
        category_template = '{folder}/{slug}/category.html'.format(folder=self.template_folder, slug=self.category.slug)
        return [category_template, template]
    ...
Ответ написан
@deliro
1) У TemplateView нет определённой переменной template_name
2) Делай это в методе.
class A(object):
    x = 5

class B(A):
    x = 6
    def foo(self):
        return super().x  # вернёт 5
Ответ написан
self.template_name
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы