Каждый раз, когда я выполняю какую-либо деятельность на своем сайте, я получаю эту ошибку :- Wallpaper.models.Wallpaper.DoesNotExist: Обои, соответствующие запросу, не существуют
Views.py
def home(request):
WAllPAPER_PER_PAGE = 4
WALL = Wallpaper.objects.all()
from django.core.paginator import EmptyPage, Paginator
from django.db.models import Q
qd = request.GET.copy()
qd.pop('page', None)
querystring = qd.urlencode()
#link formatting for ordering
ordering =request.GET.get('ordering', "")
#link formatting for sorting
search = request.GET.get('search', "")
if search:
wallpapers = Wallpaper.objects.filter(Q(name__icontains=search) | Q(category__category_name__icontains=search) | Q(tags__tag__icontains=search)).distinct()
WALL = None
else:
wallpapers = Wallpaper.objects.all()
if ordering:
wallpapers = wallpapers.order_by(ordering)
page = request.GET.get('page', 1)
wallpaper_paginator = Paginator(wallpapers, WAllPAPER_PER_PAGE)
try:
wallpapers = wallpaper_paginator.page(page)
except EmptyPage:
wallpapers = wallpaper_paginator.page(wallpaper_paginator.num_pages)
except:
wallpapers = wallpaper_paginator.page(WAllPAPER_PER_PAGE)
context = {'querystring': querystring, "wallpapers": wallpapers, 'page_obj': wallpapers, 'is_paginated': True, 'paginator': wallpaper_paginator, 'WALL': WALL}
return render(request, "Wallpaper/Home.html", context)
def All_category(request):
Cat = Category.objects.all()
context = {'Cat': Cat }
return render(request, "Wallpaper/ALL_Category.html", context )
def category(request, Category_name):
cat = Category.objects.get(category_name=Category_name)
wallpapers = Wallpaper.objects.filter(category__category_name=Category_name)
context = {'cat':cat, 'wallpapers': wallpapers}
return render(request,'Wallpaper/Category.html', context)
def download(request, wallpaper_name):
wallpaper = Wallpaper.objects.get(name=wallpaper_name)
similar_wallpapers = wallpaper.tags.similar_objects()
context = {'wallpaper': wallpaper, 'similar_wallpapers': similar_wallpapers}
return render(request, 'Wallpaper/download.html', context)
error
C:\Users\Atharva thaware\Desktop\aman\projects\Ongoing\WallpaperTown\WallpaperTown\Wallpaper\views.py:30: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'Wallpaper.models. Wallpaper'> QuerySet. wallpaper_paginator = Paginator(wallpapers, WAllPAPER_PER_PAGE) [19/Jul/2022 22:29:39] "GET / HTTP/1.1" 200 10744 [19/Jul/2022 22:29:39] "GET /media/Wallpaper/Images/wp4589844-inosuke-hashibira-wallpapers.jpg HTTP/1.1" 304 0 [19/Jul/2022 22:29:39] "GET /media/Wallpaper/Images/wp2162463-shoto-todoroki-wallpapers.png HTTP/1.1" 304 0 [19/Jul/2022 22:29:39] "GET /media/Wallpaper/Images/wp2490700-haikyu-2018-wallpapers.jpg HTTP/1.1" 304 0 [19/Jul/2022 22:29:39] "GET /media/Wallpaper/Images/wp1850905-laferrari-wallpapers.jpg HTTP/1.1" 304 0 Not Found: /docs/5.1/assets/brand/bootstrap-logo.svg [19/Jul/2022 22:29:39] "GET /docs/5.1/assets/brand/bootstrap-logo.svg HTTP/1.1" 404 3058 Internal Server Error: /favicon.ico/ Traceback (most recent call last): File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request) File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Atharva thaware\Desktop\aman\projects\Ongoing\WallpaperTown\WallpaperTown\Wallpaper\views.py", line 55, in download
wallpaper = Wallpaper.objects.get(name=wallpaper_name) File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request) File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\Users\Atharva thaware\Desktop\aman\projects\Ongoing\WallpaperTown\WallpaperTown\Wallpaper\views.py", line 55, in download
wallpaper = Wallpaper.objects.get(name=wallpaper_name) File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs) File "C:\Users\Atharva thaware\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\query.py", line 435, in get
raise self.model.DoesNotExist( Wallpaper.models.Wallpaper.DoesNotExist: Wallpaper matching query does not exist. [19/Jul/2022 22:29:42] "GET /favicon.ico/ HTTP/1.1" 500 73315
Я думаю, что здесь есть две ошибки
1-я
Пагинация может дать непоследовательные результаты с неупорядоченным списком объектов: <class 'Wallpaper.models. Wallpaper'> QuerySet.
2-й 0не
Wallpaper.models.Wallpaper.DoesNotExist: Обои, соответствующие запросу, не существуют.
В вашем журнале есть 1 ошибка и 1 предупреждение. Давайте сначала обсудим ваше предупреждение...
"Пагинация может давать противоречивые результаты при использовании неупорядоченного списка объектов: <class 'Wallpaper.models. Wallpaper'> QuerySet."
Это предупреждение возникает потому, что вы не определили упорядочение для вашего набора запросов (команда order_by, которую вы установили, работает только тогда, когда есть значение в вашей переменной order). Поэтому каждый раз, когда ваша страница пересматривается, результаты будут появляться в случайной последовательности. Чтобы исправить это, добавьте order_by('field_name') в конец вашего набора запросов или в метакласс вашей модели.
View.py
if search:
wallpapers = Wallpaper.objects.filter(Q(name__icontains=search) | Q(category__category_name__icontains=search) | Q(tags__tag__icontains=search)).distinct().order_by('-pk')
WALL = None
else:
wallpapers = Wallpaper.objects.all().order_by('-pk')
Примечание: Это не нарушит порядок, который вы применяете здесь
.
if ordering:
wallpapers = wallpapers.order_by(ordering)
Вторая ошибка связана с вашей командой get. Поскольку команда get выбрасывает ошибку, если не может найти данные в таблице базы данных. Вы должны использовать обработку исключений, чтобы избежать этого.
View.py
def category(request, Category_name):
try:
cat = Category.objects.get(category_name=Category_name)
wallpapers = Wallpaper.objects.filter(category__category_name=Category_name)
except Exception as exc:
cat = None
wallpapers = None
messages.error = (request, 'Sorry! data does not exist')
context = {'cat':cat, 'wallpapers': wallpapers}
return render(request,'Wallpaper/Category.html', context)
def download(request, wallpaper_name):
try:
wallpaper = Wallpaper.objects.get(name=wallpaper_name)
similar_wallpapers = wallpaper.tags.similar_objects()
except Exception as exc:
wallpaper = None
similar_wallpapers = None
messages.error = (request, 'Sorry! data does not exist')
context = {'wallpaper': wallpaper, 'similar_wallpapers': similar_wallpapers}
return render(request, 'Wallpaper/download.html', context)