Понять сценарий представления в 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)", возвращает определенную страницу продукта в списке продуктов.

Я не понимаю, что сделано в предпоследней строке.

Итак, я попытаюсь объяснить вам некоторые вещи и с чего начать изучение:

  1. self - это стандартное имя первого аргумента для методов объектов.
  2. В Python вы можете передавать переменное количество аргументов двумя способами: *args для неименованных аргументов; **kwargs для именованных аргументов. Мы используем *args и **kwargs в качестве аргументов, когда заранее не знаем, сколько значений мы хотим передать функции.
  3. .
  4. По умолчанию результаты, возвращаемые QuerySet, упорядочиваются кортежем упорядочивания, заданным параметром упорядочивания в Meta модели. Вы можете переопределить это на основе каждого QuerySet, используя метод order_by. В вашем случае это сортировка по ID.
  5. Идентификатор id добавляется автоматически.
  6. Читайте о пагинации здесь https://docs.djangoproject.com/en/3.2/topics/pagination/
Вернуться на верх