Задать вопрос

Подгрузка контента Django?

Как можно реализовать автоматическую подргузку контента как в твитере ?
Простенькая модель для блога. Просто потестить.
Название статьи, Текст статьи.
  • Вопрос задан
  • 5461 просмотр
Подписаться 9 Оценить Комментировать
Решения вопроса 1
zigen
@zigen
Я в проекте использовал Django-endless-pagination
Легко настраивается и интегрируется во view.
Подгружается по скроллу - как в твиттере. Там для этого есть твиттер стайл

https://django-endless-pagination.readthedocs.org/...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kazmiruk
Джанга тут не при чем. Делаете апи (django-rest-framework можно использовать), а затем яваскриптом отслеживаете скролл на странице. Как только скролл подошел к нижней границе - вызываете апи с запросом на следующую порцию данных. Получив данные отрисовываете их.
Ответ написан
Я бы сделал следующим образом

1) 1-ый вариант
во вьюхах
from django.core import serializers
from .models import MyModel

def my_view(request):
    if request.is_ajax():
        x = request.GET.get('value', 5)
        data = serializers.serialize('json', MyModel.objects.all()[:x] )   #тут по вкусу, можно все объекты, можно частями.
        return HttpResponse(data, content_type='application/json')
    else:
        return render(request, 'template.html')

2) 2-ой вариант использовать Django-Rest-Framework

И в шаблонах уже jQuery-Ajax, Angular и.т.п.

Но я сам ещё совсем новичок в этом деле, поэтому могу ошибаться :)

Update:
Я нашёл вот такой вариант:

$(window).scroll(function() {   
   if($(window).scrollTop() + $(window).height() == $(document).height()) {
       $.ajax({
            type: 'GET',
            url: '{% url 'app:json_view' %}', //Ссылка на вьюху
            dataType: "json",
            data: {'value': 10},  //Здесь можно передать данные в GET запросе, например сколько значений получить 
            success: function(data) {
                // Ответ приходит в переменную data. Её и рендерим на страницу
            }
        }); 
  }
});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы