Как показать пользователю, что его список желаний пуст?
Вопрос как в заголовке.
Когда я попробовал этот 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})
Здесь есть две основные ошибки:
- ваше условие проверяет, есть ли желаемый список, поэтому ошибка должна быть помещена в часть
else
, а не в частьif
; и - вы передаете несколько переменных в контекст, передавая его как словарь с несколькими элементами.
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
, мы сделаем только один запрос для получения всех списков, а не два, где мы сначала проверяем, пуст ли список, а затем еще один для получения данных.