Понять сценарий представления в Django
Привет, ребята, я начинаю знакомиться с django, в частности с тем, как структурированы представления. У меня есть некоторые неразрешенные сомнения как у любителя. .
Вот, например, у меня есть представление, которое должно показывать все продукты в базе данных на странице.
class HomeView(EcomMixin, TemplateView):
    template_name = "home.html"
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        all_products = Product.objects.all().order_by("-id")
        paginator = Paginator(all_products, 8)
        page_number = self.request.GET.get('page')
        print(page_number)
        product_list = paginator.get_page(page_number)
        context['product_list'] = product_list
        return context
 "get_context" возвращает словарь, представляющий контекст модели, но я не понимаю, что такое "self и kwargs".
 Затем в модель добавляются дополнительные элементы с вызовом "super().Get_context_data(** kwargs)."
 Затем все присутствующие продукты берутся и заказываются "all_products = Product.objects.all(). Order_by("-id")".
Здесь я не понимаю, что "order_by("-id")" . В таблице "Product" нет поля с именем id.
Paginator поставляется со списком объектов, а также с количеством элементов, которые вы хотите иметь на каждой странице.
Затем номер страницы запрашивается методом get и печатается. (Почему он печатается?)
 "product_list = paginator.get_page(page_number)", возвращает определенную страницу продукта в списке продуктов.
Я не понимаю, что сделано в предпоследней строке.
Итак, я попытаюсь объяснить вам некоторые вещи и с чего начать изучение:
- self - это стандартное имя первого аргумента для методов объектов.
 - В Python вы можете передавать переменное количество аргументов двумя способами: *args для неименованных аргументов; **kwargs для именованных аргументов. Мы используем *args и **kwargs в качестве аргументов, когда заранее не знаем, сколько значений мы хотим передать функции. .
 - По умолчанию результаты, возвращаемые QuerySet, упорядочиваются кортежем упорядочивания, заданным параметром упорядочивания в Meta модели. Вы можете переопределить это на основе каждого QuerySet, используя метод order_by. В вашем случае это сортировка по ID.
 - Идентификатор id добавляется автоматически.
 - Читайте о пагинации здесь https://docs.djangoproject.com/en/3.2/topics/pagination/