Metoda get_context_data - wytłumaczenie.

0

Witam, prosiłbym o wytłumaczenie poniższej metody. Ogólnie wszystko działa tak jak ma, lecz nie w tym sztuka, chciałbym to zrozumieć.
Konkretnie chodzi, jak działa **kwargs i ogólnie, druga linijka kodu.

 def get_context_data(self, **kwargs):
        context = super(SubjectDetailView, self).get_context_data(**kwargs)
        context['posts_obj'] = Posts.objects.filter(subj = self.kwargs['pk']).order_by('-when')
        return context
0

No bez jaj, wpisz "*args **kwargs python" w google i masz wszystko jak na tacy. Potem wyszukaj "python super"... Możesz wpisać "super considered super" w youtube - prezentacja z pycona Raymonda Hettingera.
Druga linijka odpala metodą get_context_data w klasie z której twoja klasa dziedziczy. W python3 mógłbyś to pewnie zapisać super().get_context_data(**kwargs) o ile nie ma wielodziedziczenia.
Co do samego get_context_data to masz świetnie w dokumentacji Django co to robi opisane.

Ech dobra, zlituję się. Używasz Model Based Views - magiii django która odawala za ciebie kupę roboty. Idealnie pasuje ci jakaś klasa, z jednym maływm wyjątkiem (albo z wieloma - wtedy więcej funkcji sobie kodzisz). Potrzebujesz tylko wysłać do templates jakąś małą pierdołkę (posts_obj) żeby ją wyświetlić na jakiejś stronie. Zamiast kodzić całe get() albo post() możesz się zdać na django i to jak w tej klasie zostało to zaimplementowane, a sam dodać potrzebne info o posts_obj w metodzie get_context_data pisząc tylko 4 linijki... W 3 linijce dołączas to info żebyć w template mógł się do tego odnieść przez {{ posts_obj }} czy jak tam chcesz. Filtrujesz sobie te posty i bierzesz tylko te, których dotczy subject obsługiwany w tym widoku.

0

Proponuje najpierw nauczyć się dokładnie pythona 2 i 3 i potem użyj Django.
Bo Django idealnie pokazuje jak można programować w Pythonie i jakie jego fajne elementy wykorzystać.

To co tu napisałeś to są podstawy Pythona a nie Django.

Ucz się Pythona a nie Django, jak już opanujesz Pythona użyj Django.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0