Как показать пользователю, что его список желаний пуст?

Вопрос как в заголовке.
Когда я попробовал этот views.py, ошибка не возникает, но сайт не хочет отображаться, страница отображается как исходный код. Есть решения?

def wishlist(request):
    if request.user.is_authenticated:
        user = request.user.id
        if List.objects.filter(user=user).exists():
            context = List.objects.filter(user=user)
            error = 'Your wishlist is empty'
        else:
            context = List.objects.filter(user=user)
    else:
        context = WishList(request)
    return render(request, 'wishlist/wishlist.html', {'wishlist': context}, {'error': error})

Здесь есть две основные ошибки:

  1. ваше условие проверяет, есть ли желаемый список, поэтому ошибка должна быть помещена в часть else, а не в часть if; и
  2. вы передаете несколько переменных в контекст, передавая его как словарь с несколькими элементами.
def wishlist(request):
    if request.user.is_authenticated:
        user = request.user.id
        context = List.objects.filter(user=user)
        if context:
            error = None
        else:
            error = 'Your wishlist is empty'
    else:
        context = WishList(request)
    return render(
        request,
        'wishlist/wishlist.html',
        {'wishlist': context, 'error': error}
    )

Проверив истинность context, мы сделаем только один запрос для получения всех списков, а не два, где мы сначала проверяем, пуст ли список, а затем еще один для получения данных.

Вернуться на верх