Почему нумерация страниц не работает на моем Django веб-сайте? - PullRequest
0 голосов
/ 10 апреля 2020

Я следовал документации django и добавил нумерацию страниц, и все выглядит хорошо. Вот как это выглядит, как выглядит нумерация страниц. Я думаю, что views.py, urls.py , и шаблон в порядке, и проблема в models.py, я точно не знаю. Когда я нажимаю на любой номер страницы в пагинации, который перенаправляет меня на страницу с URL «example? Page =», и проблема возникает здесь, потому что мой сайт не работает с «? Page =». Вот ошибка, которую я получил:

IntegrityError at /new_search

NOT NULL constraint failed: global_store_app_search.search

Request Method: GET Request URL: http://127.0.0.1:8000/new_search?page=2 Django Version: 2.1.2 Exception Type: IntegrityError Exception Value:

NOT NULL constraint failed: global_store_app_search.search

Exception Location: /home/ubuntu/.local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py in execute, line 296 Python Executable: /usr/bin/python3 Python Version: 3.6.9 Python Path:

['/home/ubuntu/Desktop/TunisiaGlobalStoreDjango/global_store_project', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/ubuntu/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

Server time: Thu, 2 Apr 2020 18:08:59 +0000

Вот шаблон:

<div class="pagination">
    {% if posts.has_previous %}
      <a class="btn btn-outline-info mb-4" href="?page=1">First</a>
      <a class="btn btn-outline-info mb-4" href="?page={{ posts.previous_page_number }}">Previous</a>
    {% endif %}
  {% for num in posts.paginator.page_range %}
    {% if posts.number == num %}
      <a class="btn btn-outline-info mb-4" href="?page={{ num }}">{{ num }}</a>
    {% elif num > posts.number|add:"-3" and num < posts.number|add:"3" %}
      <a class="btn btn-outline-info mb-4" href="?page={{ num }}">{{ num }} </a>
    {% endif %}
  {% endfor %}

  {% if posts.has_next %}
      <a class="btn btn-outline-info mb-4" href="?page={{ posts.next_page_number }}">Next</a>
      <a class="btn btn-outline-info mb-4" href="?page={{ posts.paginator.num_pages }}">Last</a>
  {%  endif%}
  {% endif %}
 </div>

1 Ответ

0 голосов
/ 10 апреля 2020

И views.py

def new_search(request):
    final_postings = []
    conn = hd.connect_database("database/products.db")
    search = request.POST.get('search')
    models.Search.objects.create(search=search)

    if search == "" or search == None:
        search ="Empty"

    search_list = hd.search_product(conn, search)

    if search_list == None:
        final_postings = []
        number_products_found = 0
    else:
        number_products_found = len(search_list)
        for product in search_list:
            print (product)
            final_postings.append((product[0], product[1], product[2], product[3]))


    #paginate_by = 12
    paginator = Paginator(final_postings, 12)
    try:
        page = int(request.GET('page','1'))
    except:
        page = 1
    try:
        posts = paginator.page(page)
    except(EmptyPage, InvalidPage):
        posts = paginator.page(paginator.num_pages)

    stuff_for_frontend = {
    'search': search,
    'final_postings': final_postings,
    'number_products_found' : number_products_found,
    'posts':posts,
    }

    return render(request, 'new_search.html', stuff_for_frontend)
...