Django paginator page return NoneType - PullRequest
       12

Django paginator page return NoneType

0 голосов
/ 01 апреля 2019

Я делаю простой поиск с помощью Django и использую встроенную нумерацию страниц для разбивки результатов на страницы, и я получаю эту ошибку, когда нажимаю «Далее» для просмотра результатов на следующей странице, аргумент int () должен быть строкой, похожей на байтыобъект или число, а не 'NoneType' Я не знаю, что его вызывает, вот код, q это строка запроса

def result(request):
    try:
        q = request.GET.get('q')
        orders = Order.objects.filter(Q(flat_number=int(q)) | Q(customer_contact=int(q)))
        paginator = Paginator(orders, 10) # Show 25 contacts per page
        page = request.GET.get('page')
        orders = paginator.get_page(page)
        context['orders'] = orders
        return render(request, 'main/results.html',context)
    except Exception as e:
        print('error is ', e)
        return HttpResponse(str(e))

Ответы [ 3 ]

0 голосов
/ 01 апреля 2019

Вот пример того, как работать с модулем paginator, для пустых страниц и т. Д.

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger


def post_list(request): #list items
    queryset_list = Post.objects.all() #.order_by("-timestamp")

    query = request.GET.get("q")
    if query:
        queryset_list = queryset_list.filter(
            Q(title__icontains=query) |
            Q(content__icontains=query)


            ).distinct()

    paginator = Paginator(queryset_list, 10) # Show 25 contacts per page
    page_request_var = "page"
    page = request.GET.get(page_request_var)
    try:
        queryset = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        queryset = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        queryset = paginator.page(paginator.num_pages)
    context = {
        "object_list": queryset,
        "title": "Building stuff with code",
        "page_request_var" : page_request_var
    }
    return render(request, "post_list.html", context)
0 голосов
/ 02 апреля 2019

попробуйте следующим образом

def result(request):
    try:
        q = request.GET.get('q')
        orders = Order.objects.filter(Q(flat_number=int(q)) | 
         Q(customer_contact=int(q)))
        paginator = Paginator(orders, 10) # Show 25 contacts per page
        page = request.GET.get('page')
        try:
            pots = paginator.page(page)
        except PageNotAnInteger:
            posts = paginador.page(1)
        except EmptyPage:
            posts = paginador.page(1)
        context['orders'] = post
        return render(request, 'main/results.html',context)


    except Exception as e:
        print('error is ', e)
        return HttpResponse(str(e))
0 голосов
/ 01 апреля 2019

В request.GET.get('q') он вернет None, если q не передается как параметр в вызове get.

Изменение его на request.GET['q'] вызовет исключение, если q не передано

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...