использование self и request вместе
пытаюсь настроить пагинацию, но почему-то не получается решил объединить две функции, но выходит ошибка missing 1 required positional argument: 'self'
помогите правильно оформить функцию, строго не судите, я еще новичок
views.py
from django.views.generic import ListView
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from products.models import Category, Product
class ProductList(ListView):
model = Product
template_name = 'products/list.html'
paginate_by = 2
def product_list(request, self, category_slug=None, **kwargs):
category = None
categories = Category.objects.all()
products = Product.objects.filter(available=True)
if category_slug:
category = get_object_or_404(Category, slug=category_slug)
products = products.filter(category=category)
context = super(ProductList, self).get_context_data(**kwargs)
productsCatalog = Product.objects.all()
paginator = Paginator(productsCatalog, self.paginate_by)
page = self.request.GET.get('page')
try:
prods = paginator.page(page)
except PageNotAnInteger:
prods = paginator.page(1)
except EmptyPage:
prods = paginator.page(paginator.num_pages)
context['prodsCatalog'] = prods
return render(request,
'products/list.html',
{'category': category,
'categories': categories,
'products': products}, context)
urls.py
urlpatterns = [
url(r'^$', views.product_list, name='product_list'),
url(r'^(?P<category_slug>[-\w]+)/$',
views.product_list,
name='product_list_by_category'),
url(r'^(?P<id>\d+)/(?P<slug>[-\w]+)/$',
views.product_detail,
name='product_detail'),
]