首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次我在我的网站上做一些活动时,我都会收到以下错误:- Wallpaper.models.Wallpaper.DoesNotExist:墙纸匹配查询不存在

每次我在我的网站上做一些活动时,我都会收到以下错误:- Wallpaper.models.Wallpaper.DoesNotExist:墙纸匹配查询不存在
EN

Stack Overflow用户
提问于 2022-07-22 16:19:03
回答 1查看 26关注 0票数 0

Views.py

代码语言:javascript
复制
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)

错误

代码语言:javascript
复制
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

我认为有两个错误

第一次

分页可能产生与无序object_list: QuerySet不一致的结果.

二0 0ne

Wallpaper.models.Wallpaper.DoesNotExist:不存在墙纸匹配查询。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-22 17:30:21

日志中有一个错误和一个警告。我们先讨论一下你的警告..。

“分页可能与无序的object_list:QuerySet‘>产生不一致的结果.”

出现此警告消息是因为您没有在queryset上定义任何排序(您设置的order_by命令只有在排序变量中有一个值时才有效)。因此,每次页面重新呈现时,结果都会以随机顺序出现。要修复这个问题,请在查询集的末尾或模型的元类中添加order_by('field_name')。

View.py

代码语言:javascript
复制
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')

注意:这不会干扰您在这里申请的订单。

代码语言:javascript
复制
if ordering:
        wallpapers = wallpapers.order_by(ordering)

第二个错误是由于你的get命令。因为get命令在数据库表中找不到数据时会抛出一个错误。您应该使用异常处理来避免它。

View.py

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73083320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档