Почему страница грузится 2 секунды? django
Почему страница грузится 2 секунды? Может, потому, что несколько for в html?
views
class OrdersHomeView(ListView):
#model = Orders
paginate_by = 10
template_name = 'orders/orders_list.html'
context_object_name = 'orders'
def get_queryset(self):
return self.getQuery()
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Все заказы'
# filter
list_orders = self.getQuery()
#paginator
paginator = Paginator(list_orders, self.paginate_by)
page = self.request.GET.get('page')
try:
orders_page = paginator.page(page)
except PageNotAnInteger:
page = 1
orders_page = paginator.page(page)
except EmptyPage:
orders_page = paginator.page(paginator.num_pages)
print('orders_page ', orders_page.object_list)
# related data
related = self.checkRelated()
related_list = []
if related:
for x in related:
modelPath = x.module_name + '.models'
app_model = importlib.import_module(modelPath)
cls = getattr(app_model, x.related_class_name)
for r in orders_page:
print('r ', r)
try:
cls2 = cls.objects.get(related_uuid=r.related_uuid)
related_get = cls2.get_related_data()
#print('related_get', related_get)
related_list.append(related_get)
except ObjectDoesNotExist:
pass
#print('related_list', related_list)
context['related_list'] = related_list
return context
def checkRelated(self):
related = Plugins.objects.get(module_name='orders')
return related.related.all()
def getQuery(self):
category_filter = self.request.GET.get('category')
if category_filter:
list_orders = Orders.objects.filter(category__category=category_filter)
else:
list_orders = Orders.objects.all()
return list_orders
html
{% extends "base.html" %}
{% block title %}{{ title }} - {{ block.super }}{% endblock %}
{% block sidebar %}
{% include 'include/_sidebar_orders.html' %}
{% endblock %}
{% block content %}
<div class="row">
<div class="col-4">
<div class="list-group" id="list-tab" role="tablist">
{% for item in page_obj %}
<a class="list-group-item list-group-item-action" id="list-{{ item.pk }}" data-bs-toggle="list" href="#id-list-{{ item.pk }}" role="tab" aria-controls="home">Заказ {{ item.pk }}</a>
{% endfor %}
</div>
</div>
<div class="col-8">
<div class="tab-content" id="nav-tabContent">
{% for item in page_obj %}
<div class="tab-pane fade show" id="id-list-{{ item.pk }}" role="tabpanel" aria-labelledby="list-{{ item.pk }}">
<div class="shadow p-3 mb-5 bg-body rounded">
<div class="d-flex justify-content-end">
<a href="edit/{{ item.pk }}"><button type="button" class="btn btn-secondary">Редактировать</button></a>
</div><br>
{% for related_item in related_list %}
{% if related_item.related_uuid and item.related_uuid == related_item.related_uuid %}
<div class="card border-light" >
<div class="card-header">{{ related_item.module_name }}</div>
<div class="card-body">
{% for key, value in related_item.items %}
{% if key != 'related_uuid' and key != 'module_name' %}
{{ key }}: {{ value }}<br>
{% endif %}
{% endfor %}
</div>
</div>
{% endif %}
{% endfor %}
<div class="card border-light" >
<div class="card-header bg-gradient">Заказ: {{ item.pk }}<br></div>
<div class="card-body">
В ремонте: {{ item.device }}<br>
Статус: {{ item.status }}<br>
Серийный: {{ item.serial }}<br>
Комментарий: {{ item.comment }}<br>
Категория: {{ item.category }}<br>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<br><br>
<nav aria-label="...">
<ul class="pagination">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1">« В начало</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">Предудущая</a>
</li>
{% endif %}
{% for p in page_obj.paginator.page_range %}
{% if page_obj.number == p %}
<li class="page-item active" aria-current="page">
<span class="page-link">{{ p }}</span>
</li>
{% elif p > page_obj.number|add:-3 and p < page_obj.number|add:3 %}
<li class="page-item">
<a class="page-link" href="?page={{ p }}">{{ p }}</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">Следующая</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}"> В конец »</a>
</li>
{% endif %}
</ul>
</nav>
{% endblock %}
