django 实现滚动翻页

视图层(views.py)

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render, get_object_or_404
from django.views.generic import View

class UserCommentsListView(View):
    """
    用户评论列表详情
    """
    def get(self, request, user_id):
        user = get_object_or_404(UserProfile, id=int(user_id))
        comments = user.user_comments.all().filter(parent=None)
        # 分页
        paginator = Paginator(comments, 10)
        page = request.GET.get('page')
        try:
            user_comments = paginator.page(page)
        except PageNotAnInteger:
            user_comments = paginator.page(1)
        except EmptyPage:
            if request.is_ajax():
                return HttpResponse('')
            user_comments = paginator.page(paginator.num_pages)

        if request.is_ajax():
            return render(request, 'public-comment-list-ajax.html', {'articles': user_comments})

        # 当前页面信息
        main_top_info = '评论列表'
        # 文章数
        article_count = len(comments)
        return render(request, 'public-comment-list.html', {
            'comments': user_comments,
            'comment_count': article_count,
            'main_top_info': main_top_info
        })

路由(urls.py)

from .views import UserCommentsListView

path('<int:user_id>/comments/', UserCommentsListView.as_view(), name='user_comments'),

模板(template)

// public-comment-list.html

{% extends "base.html" %}

{% block title %}
    {{ main_top_info }}
{% endblock %}

{% block main_content %}
    <div class="container index">
  <div class="row">
    <div class="col-xs-12 main">
      <!-- 用户title部分导航 -->
       <div class="main-top">
          <h4>{{ main_top_info }}({{ comment_count }})</h4>
      </div>
       <hr>
      <div id="list-container">
        <!-- 用户评论过文章列表模块 -->
        <ul class="note-list public-comment-list">
        {% include 'public-comment-list-ajax.html' %}
        </ul>
        <!-- 用户评论过文章列表模块结束 -->
      </div>
    </div>
  </div>
</div>
{% endblock %}

{% block custom_js %}
    <script type="text/javascript">
    $.ajaxSetup({
        data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
    });
    $(document).ready(function () {
        var page = 1;
        var empty_page = false;
        var block_request = false;

        $(window).scroll(function() {
        var margin = $(document).height() - $(window).height() - 200;
            if  ($(window).scrollTop() > margin && empty_page == false && block_request == false) {
                {% if comment_count < 10 %}
                    return false;
                {% endif %}
                block_request = true;
                page += 1;
                $.get('?page=' + page, function(data) {
                    if(data == '')
                    {
                        empty_page = true;
                    }
                    else {
                        block_request = false;
                        $('.public-comment-list').append(data);
                    }
                });
            }
        });
    });

</script>
{% endblock %}
// public-comment-list-ajax.html

{% for comment in comments %}
          <li id="note-3" data-note-id="3">
            <div class="content">
              <div class="author">
{#                <a class="avatar" href="{{ user_default.get_absolute_url }}"> <img src="{{ MEDIA_URL }}{{ user_default.avatar }}" alt="avatar"> </a>#}
                 <cite>
                <span> 来自 </span>
                <div class="name">

                      <a href="{{ comment.user.get_absolute_url }}">
                        {{ comment.user.get_username_or_nickname }}
                      </a>
                      <span>{{ comment.created }}</span>
                </div>
                </cite>
              </div>
                <p class="comment">{{ comment.content }}</p>
              <blockquote>
                <a class="title" href="{{ comment.article.get_absolute_url }}"> {{ comment.article.title }} </a>
                <p class="abstract">{{ comment.article.summary }}...</p>
                <div class="meta">
                  <a target="_blank" href="{{ comment.article.author.get_absolute_url }}" class="text-teal">
                      {{ comment.article.author.get_username_or_nickname }}
                  </a>
                  <a target="_blank" href="{{ comment.article.get_absolute_url }}"> <i class="fa fa-eye"></i> {{ comment.article.view_count }} </a>
                  <a target="_blank" href="{{ comment.article.get_absolute_url }}#comments"> <i class="fa fa-comment-o"></i> {{ comment.article.comments.count }} </a>
                  <span><i class=" fa fa-heart-o"></i> {{ comment.article.total_like }}</span>
                </div>
              </blockquote>
            </div>
          </li>
{% endfor %}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。 这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。 平时不明白的知识点,放在项目里去理解就恍然大悟了。   一、融汇贯通 本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。   二、贴近实战 本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战   三、课程亮点 在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互   适合人群: 1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友; 2、有Django基础,但是想学习企业级项目实战的朋友; 3、有MySQL数据库基础的朋友  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值