Django Wagtail: Это плохая практика доступа к данным, используя собственный object.method вместо переписывания метода object.get_context? - PullRequest
0 голосов
/ 16 июня 2019

Я играю с Джанго Трясогузка .Что касается рендеринга данных в шаблонах, я знаю, что официальным способом является переписать метод get_context в моем объекте страницы.Но я могу просто написать свой собственный метод, я нахожу его лучше и понятнее для меня.Просто хочу спросить, если это возможно, как это сделать или есть какие-то проблемы, ловить, проблемы с производительностью?Большое спасибо.

стандартным способом:

class Blog(Page): 
    template = "blog/blog.html"        

    def get_context(self, request):
        context = super().get_context(request)
        get_posts = self.get_children().live().order_by('-first_published_at').all()
        context['list_all'] = get_posts
        return context

используя собственный метод:

class Blog(Page): 
    template = "blog/blog.html"        

    def list_all(self):
       get_posts = self.get_children().live().order_by('-first_published_at').all()
       return (get_posts)

Визуализация в шаблоне - стандартным способом:

  {% for post in list_all %}
      {{post.title}}
  {% endfor %}

Визуализация в шаблоне - собственный метод:

  {% for post in self.list_all %}
      {{post.title}}        
  {% endfor %}

1 Ответ

1 голос
/ 16 июня 2019

Оба подхода хороши.Единственный реальный недостаток использования метода заключается в том, что у вас нет легкого доступа к объекту запроса, поэтому (например) вы не сможете реализовать распечатку с разбивкой на страницы или фильтрацию на основе параметров URL-адреса.

Использование вашей бизнес-логики в методах также означает, что вы потенциально можете использовать ее в других местах, помимо рендеринга шаблонов, например, , выводя ее через API или , используя ее в поисковой индексации .

...