Как загрузить данные из переменной в django paginator? - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно создать paginator на основе данных из переменной. Переменная - это просто списки Python.

views.py:

def test(request):

   db = MySQLdb.connect(host="localhost",  # your host, usually localhost
                        user="pc",  # your username
                        passwd="3346378",  # your password
                        db="mc")

   cur = db.cursor()

   cur.execute('''SELECT * FROM hello left join hell on hello.Id=hell.Id ''')

   row = cur.fetchall()

Итак, строка - это много списков. И как я могу загрузить его в пагинатор? Или один из способов - создать таблицу и модель для данных и работать с ними, используя Django ORM или что-то еще?

1 Ответ

0 голосов
/ 09 октября 2019

Django имеет встроенный класс Paginator, вы можете проверить это: объекты paginator и несколько примеров здесь: Примеры нумерации страниц , для использования в представлении: ИспользованиеРазбиение на страницы в представлении

, если оно ссылается на несколько объектов, тогда пишите имена переменных множественного числа: так что это rows вместо row

Так что в вашем случае в представлении:

paginator = Paginator(rows, 25) # Show 25 rows per page
page = request.GET.get('page')
rows = paginator.get_page(page)
return render(request, 'example.html', {'rows': rows})

И в HTML:

{% for r in rows %}

    {{ r }}<br>
    ...
{% endfor %}

<div class="pagination">
    <span class="step-links">
        {% if rows.has_previous %}
            <a href="?page=1">&laquo; first</a>
            <a href="?page={{ rows.previous_page_number }}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ rows.number }} of {{ rows.paginator.num_pages }}.
        </span>

        {% if rows.has_next %}
            <a href="?page={{ rows.next_page_number }}">next</a>
            <a href="?page={{ rows.paginator.num_pages }}">last &raquo;</a>
        {% endif %}
    </span>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...