Django. Постраничный вывод данных из стороннего источника
Есть заготовка вьюхи и шаблона, которые обрабатывают поисковый запрос в LDAP и выводят результаты поиска пользователей. Данные запрашиваются напрямую из AD и так как они весьма динамичны, хранить их в БД django не имеет смысла.
Данная заготовка работает и прекрасно выводит первые 25 записей из списка users_list, однако очевидно, что при попытке перейти на вторую страницу списка произойдет пезапуск вьюхи, список обнулится и будет выведена только форма поиска.
Подскажите, как правильно реализовать на одной странице форму поиска и постраничный вывод результатов поиска?
view.py
def users_list(request):
users_list_form = forms.UserListForm()
context = {"title" : "Search Users",
"users_list_form" : users_list_form}
if request.method == "POST":
users_list_form = forms.WebExUserListForm(request.POST)
if users_list_form.is_valid():
# Запрос данных в AD
users_list = user_search(users_list_form.cleaned_data["search_object"])
if users_list:
paginator = Paginator(users_list, 25)
page_number = request.GET.get("page")
page_obj = paginator.get_page(page_number)
context.update({"page_obj": page_obj})
messages.success(request, "Found {} Record(s)!".format(len(users_list)))
else:
messages.warning(request, "Users Not Found!")
return render(request, "app_ldap/users_ldap.html", context)
users_ldap.html
{% extends 'app_base/base_home.html' %}
{% load static %}
{% block content %}
<div>
<form method="post">
{% csrf_token %}
<div>
{{users_list_form}}
<button class="btn btn-info" type="submit"><i class="icon-search icon-white"></i> Search</button>
</div>
</form>
</div>
{% if page_obj %}
<div>
<table>
<tbody>
{% for user in page_obj %}
<tr class="row1">
<td width="100" style="text-align: center; vertical-align: middle;">
<img src="data:image/png;base64,{{user.thumbnailPhoto}}" alt="None">
</td>
<td>
<div>
<h4><strong>{{ user.displayName }}</strong></h4>
<h5>{{ user.ipPhone }} | {{ user.mail }}</h5>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<!-- Phone Pagination Block -->
{% if page_obj.has_previous %}
<a class="btn btn-outline-info" href="?page=1">First</a>
<a class="btn btn-outline-info" href="?page={{ page_obj.previous_page_number }}">Previous</a>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<a class="btn btn-info" href="?page={{ num }}">{{ num }}</a>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<a class="btn btn-outline-info" href="?page={{ num }}">{{ num }}</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a class="btn btn-outline-info" href="?page={{ page_obj.next_page_number }}">Next</a>
<a class="btn btn-outline-info" href="?page={{ page_obj.paginator.num_pages }}">Last</a>
{% endif %}
</div>
{% endif %}
{% endblock content %}