Пагинация не действует на веб-странице
Я применяю пагинацию на моей странице sports.html, В views.py я использую listview и использую paginate_by = 2, но проблема в том, что пагинация не действует на веб-странице.
Номера пагинации видны на странице и при нажатии на эти номера страниц не выдается никакой ошибки, но все посты видны на всех страницах, посты не разделяются по значению paginate_by.
Вставьте ссылку с сайта Pastebin для справки: https://pastebin.com/utnd6v5N.
может ли кто-нибудь указать, что я делаю неправильно здесь.
Это происходит потому, что вы создаете свой набор запросов на get_context_data. Вы не соблюдаете структуру listview. Попробуйте сделать что-то вроде этого в вашем представлении:
class SportsList(ListView):
queryset = Sport.objects.all()
context_object_name = “sports”
template_name = 'frontend/sports.html'
paginate_by = 2
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['main'] = Main.objects.all()
return context
Вам необходимо использовать следующее в файле views.py.
context_object_name = 'sports'
По умолчанию, во время выполнения представления Django, self.object_list будет содержать список объектов (обычно, но не обязательно набор запросов), с которыми работает представление. Вы можете посмотреть ссылку в Django doc здесь.
генеральное представление списка
Конечно, вы добавляете 'sports' в контексте def get_context_data, но представление общего списка Django должно оперировать значением, упомянутым в context_object_name или object_list.
Следовательно, в вашем файле views.py используйте:
class SportsList(ListView):
model = Sports
template_name = 'frontend/sports.html'
paginate_by = 2
context_object_name = 'sports'
ordering = ["id"]