У меня есть веб-сайт, который показывает фотографии, которые всегда добавляются и люди видят дубликаты между страницами на домашней странице (последние добавленные фотографии)Джанго нумерацией страниц в то время как объекты добавляются
Я не совсем уверен, как подойти к этой проблеме, но это в основном Что происходит:
- Главная страница отображает последние 20 фотографий [0:20]
- прокрутке (пока фотографии добавляются в БД
- пользователь загружает следующую страницу (через ajax)
- На странице отображаются фотографии [20:40]
- Пользователь видит дубликаты фотографий, потому что фотографии, добавленные в верхней части списка толкнул их на следующей странице
Что такое лучший способ решить эту проблему ? Я думаю, мне нужно как-то кэшировать запрос на сеанс пользователей, может быть? Я не знаю много о тайниках действительно так шаг за шагом объяснение было бы бесценным
здесь есть функция, которая получает новую страницу изображений:
def get_images_paginated(query, origins, page_num):
args = None
queryset = Image.objects.all().exclude(hidden=True).exclude(tags__isnull=True)
per_page = 20
page_num = int(page_num)
if origins:
origins = [Q(origin=origin) for origin in origins]
args = reduce(operator.or_, origins)
queryset = queryset.filter(args)
if query:
images = watson.filter(queryset, query)
else:
images = watson.filter(queryset, query).order_by('-id')
amount = images.count()
images = images.prefetch_related('tags')[(per_page*page_num)-per_page:per_page*page_num]
return images, amount
вида, который использует функцию:
def get_images_ajax(request):
if not request.is_ajax():
return render(request, 'home.html')
query = request.POST.get('query')
origins = request.POST.getlist('origin')
page_num = request.POST.get('page')
images, amount = get_images_paginated(query, origins, page_num)
pages = int(math.ceil(amount/20))
if int(page_num) >= pages:
last_page = True;
else:
last_page = False;
context = {
'images':images,
'last_page':last_page,
}
return render(request, '_images.html', context)
Ваша функция не является видом джанго. он не получает HttpRequest и не возвращает HttpResponse, как ваш аякс разговаривает с этой функцией? – doniyor
Моя ошибка, это не вид, а только основная функция, которая получает изображения, которые используются разными видами. – davegri
, то, пожалуйста, покажите, что вид – doniyor