Почему django представление на основе классов (DetailView) работает только с указанными c именами переменных - PullRequest
0 голосов
/ 15 апреля 2020

Мой следующий вопрос состоит в том, чтобы понять, почему переменная template_name, например, с классом DetailView, работает только с именно этим именем переменной.

Например, в views.py:

    from django.views.generic import DetailView

        # /appPruebaDos/detailView/<int:pk>
        class DetailViewObject(DetailView):
            model = Articulo
            template_name = "plantillaDetailView.html" # varible fijado del tipo DetailView

Почему я не могу использовать другую переменную типа (это не работает):

    # /appPruebaDos/detailView/<int:pk>
    class DetailViewObject(DetailView):
        model = Articulo
        templateName = "plantillaDetailView.html" # varible fijado del tipo DetailView

Я думаю, что поле template_name определено в зависимостях DetailView, но как и где определяется?

1 Ответ

3 голосов
/ 15 апреля 2020

Рекомендуется следовать стандартным соглашениям языка. В Python стандартное соглашение об именовании идентификаторов - Змеиный случай (Пример: имя_ шаблона).

Во-вторых, причина, по которой templateName не работает, а template_name работает, заключается в том, что унаследованный вами класс (DetailView) ищет в вашем классе атрибут с именем template_name.

Вы можете увидеть, как Django пытается найти template_name в Django хранилище Github. Вот ссылка на базовый класс представлений Django, который реализует функцию с именем get_template_names().

...