Встречается на 1% собеседований по Python
Как передать большую таблицу с Backend на Frontend
Для передачи больших таблиц с Backend на Frontend оптимально использовать пагинацию, потоковую передачу или сжатие данных.
1. Пагинация (разбивка на страницы):
python
# Django example
from django.core.paginator import Paginator
def get_data(request):
queryset = MyModel.objects.all()
paginator = Paginator(queryset, 100) # 100 записей на страницу
page = request.GET.get('page', 1)
data = paginator.page(page)
return JsonResponse({'data': list(data.object_list.values())})2. Потоковая передача (Streaming):
python
# FastAPI example
from fastapi import Response
import csv
from io import StringIO
@app.get("/stream-csv")
async def stream_csv():
data = MyModel.objects.all().iterator()
buffer = StringIO()
writer = csv.writer(buffer)
for row in data:
writer.writerow([row.field1, row.field2])
return Response(content=buffer.getvalue(), media_type="text/csv")3. Сжатие (Gzip/JSON):
python
# Flask example
from flask import jsonify, make_response
import gzip
@app.route('/compressed-data')
def compressed_data():
data = get_large_data()
compressed = gzip.compress(jsonify(data).data)
response = make_response(compressed)
response.headers['Content-Encoding'] = 'gzip'
return responseДополнительно:
- Используйте
chunked transfer encodingдля HTTP. - Для очень больших данных рассмотрите WebSockets или Server-Sent Events (SSE).
- Оптимизируйте запросы (
.only(),.defer()в ORM).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы