首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分页django评论的最简洁/最简单的方法是什么?

分页Django评论的最简洁/最简单的方法是使用Django自带的评论系统,然后自定义一个评论模型并设置分页。

首先,你需要在Django应用程序的settings.py文件中添加Django的评论系统。可以通过以下命令添加评论系统:

代码语言:python
复制
INSTALLED_APPS = [
    # ...
    'django.contrib.comments',
    'django.contrib.contenttypes',
    # ...
]

然后,你需要在Django应用程序的urls.py文件中添加评论系统的URL路由。可以通过以下命令添加URL路由:

代码语言:javascript
复制
from django.urls import path
from . import views

urlpatterns = [
    # ...
    path('comments/', views.CommentListView.as_view(), name='comments'),
    path('comments/<int:pk>/', views.CommentDetailView.as_view(), name='comment-detail'),
    path('comments/<int:pk>/vote/', views.vote, name='comment-vote'),
    path('comments/new/', views.CommentCreateView.as_view(), name='comment-create'),
    path('comments/<int:pk>/edit/', views.CommentUpdateView.as_view(), name='comment-edit'),
    path('comments/<int:pk>/delete/', views.CommentDeleteView.as_view(), name='comment-delete'),
]

接下来,你需要在Django应用程序的views.py文件中自定义评论模型并设置分页。可以通过以下命令自定义评论模型并设置分页:

代码语言:python
复制
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.comments.models import Comment
from django.contrib.contenttypes.models import ContentType
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.http import HttpResponse, JsonResponse

def comments_list(request, content_type_id, object_id, page=1):
    content_type = get_object_or_404(ContentType, pk=content_type_id)
    object_id = int(object_id)
    comments = Comment.objects.filter(content_type=content_type, object_id=object_id).order_by('-created_at')
    paginator = Paginator(comments, 10)
    try:
        comments_list = paginator.page(page)
    except PageNotAnInteger:
        comments_list = paginator.page(1)
    except EmptyPage:
        comments_list = paginator.page(paginator.num_pages)
    return render(request, 'comments/list.html', {'comments_list': comments_list})

最后,你需要在Django应用程序的templates文件夹中创建一个名为list.html的模板,用于显示评论列表。可以通过以下命令创建模板:

代码语言:bash
复制
touch templates/comments/list.html

在模板中,你可以使用以下代码来显示评论列表:

代码语言:html
复制

{% extends 'base.html' %}

{% block content %}

<h2>评论列表</h2>

<div class="row">

代码语言:txt
复制
<div class="col-8">
代码语言:txt
复制
  <div class="card">
代码语言:txt
复制
    <div class="card-header">
代码语言:txt
复制
      <h5>所有评论</h5>
代码语言:txt
复制
    </div>
代码语言:txt
复制
    <div class="card-body">
代码语言:txt
复制
      <div class="table-responsive">
代码语言:txt
复制
        <table class="table">
代码语言:txt
复制
          <thead>
代码语言:txt
复制
            <tr>
代码语言:txt
复制
              <th>用户</th>
代码语言:txt
复制
              <th>评论内容</th>
代码语言:txt
复制
              <th>评分</th>
代码语言:txt
复制
              <th>创建时间</th>
代码语言:txt
复制
              <th>操作</th>
代码语言:txt
复制
            </tr>
代码语言:txt
复制
          </thead>
代码语言:txt
复制
          <tbody>
代码语言:txt
复制
            {% for comment in comments_list %}
代码语言:txt
复制
              <tr>
代码语言:txt
复制
                <td>{{ comment.user }}</td>
代码语言:txt
复制
                <td>{{ comment.content }}</td>
代码语言:txt
复制
                <td>{{ comment.rating }}</td>
代码语言:txt
复制
                <td>{{ comment.created_at }}</td>
代码语言:txt
复制
                <td>
代码语言:txt
复制
                  <a href="{% url 'comment-edit' comment.id %}"><i class="fas fa-pencil-alt"></i></a>
代码语言:txt
复制
                  <a href="{% url 'comment-delete' comment.id %}"><i class="fas fa-trash-alt"></i></a>
代码语言:txt
复制
                </td>
代码语言:txt
复制
              </tr>
代码语言:txt
复制
            {% endfor %}
代码语言:txt
复制
          </tbody>
代码语言:txt
复制
        </table>
代码语言:txt
复制
      </div>
代码语言:txt
复制
    </div>
代码语言:txt
复制
  </div>
代码语言:txt
复制
</div>
代码语言:txt
复制
<div class="col-4">
代码语言:txt
复制
  <div class="card">
代码语言:txt
复制
    <div class="card-
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券