首页
学习
活动
专区
工具
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-
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

简单 Django 教程

例如tornado用是自己异步非阻塞“wsgi”,flask则只提供了精简和基本框架。Django则是直接使用了WSGI,并实现了大部分功能。 2....通俗解释:一种文件组织和管理形式!不要被缩写吓到了,这其实就是把不同类型文件放到不同目录下一种方法,然后取了个高大上名字。...编写路由 路由都在urls文件里,它将浏览器输入url映射到相应业务处理逻辑。 简单urls编写方法如下图: 编写业务处理逻辑 业务处理逻辑都在views.py文件里。...至此,一个简单django编写web服务就启动成功了。 返回HTML文件 上面我们返回给用户浏览器是什么?一个字符串!实际上这肯定不行,通常我们都是将html文件返回给用户。...至此,一个要素齐全,主体框架展示清晰django项目完成了,其实很简单是不是?

1.3K10

升级R简单直接方法

升级R一直是一件比较痛苦事情,你需要先安装新R,然后在逐一安装以前装过包。最快办法也是把以前包文件夹拷到新R中,然后在新版本中运行包更新。...由于官方源一般都提供最新R版本二进制文件,所以为了更好稳定性一般也要跟着升级。所以这是一件相对痛苦又不得不做事情。...现在installr程序包提供了自动化升级途径,你只需要回答几个问题就可以将R升级至最新版本,同时相应程序包也会及时得到更新。...你需要做只是: install.packages("installr") library(installr) updateR() 然后就会提示最新R版本,和是否需要拷贝老版本R程序包目录,是否需要移除老程序包目录以及是否更新新版本中程序包...一切搞定之后会提醒你是否需要打开新RGui,程序会默认将系统默认R设置为最新版,因此RStudio也会自动切换到最新R版本。

1.5K130

升级R简单直接方法

升级R一直是一件比较痛苦事情,你需要先安装新R,然后在逐一安装以前装过包。最快办法也是把以前包文件夹拷到新R中,然后在新版本中运行包更新。...由于官方源一般都提供最新R版本二进制文件,所以为了更好稳定性一般也要跟着升级。所以这是一件相对痛苦又不得不做事情。...现在installr程序包提供了自动化升级途径,你只需要回答几个问题就可以将R升级至最新版本,同时相应程序包也会及时得到更新。...你需要做只是: install.packages("installr") library(installr) updateR() 然后就会提示最新R版本,和是否需要拷贝老版本R程序包目录,是否需要移除老程序包目录以及是否更新新版本中程序包...总的来看,R升级还是很成功,使用起来也很方面。

9.4K20

上传ipa到appstore简洁方法

随着H5技术越来越流行,越来越多人使用H5Ide开发app应用,而使得我们使用windows电脑也可以开发ios应用。...而开发ios需要ios证书,打包完后,还需要将生成ipa文件上传到appstore。...而苹果官方提供生成证书工具和上传app store工具只能运行在mac 电脑上,假如我们在windows电脑开发,生成证书和上传appstore怎么办呢?...使用方法简单,直接上传ipa文件就可以将ipa文件上传到苹果开发者中心构建版本里,然后在苹果开发者中心里面将这个构建版本提交审核就可以了。...: 点击开发者中心右上角用户名下拉: 点击email setting就可以进入专用密码设置(获取)页面,这时需要重新登录: 随即即可获取专用密码: 六、上传成功后,大概过25分钟左右,即可在苹果开发者中心构建版本见到新上传

50320

简单 MyBatis Plus 多表联接、分页查询实现方法

,必须用分页查询, 那么,怎么通过 MyBatisPlus 来实现关联、分页查询呢 ?...很简单,往下看。 二、需求、数据库表设计 这是个人 app 项目中 v1.0 版本部分表。.../MyBatisPlus_page_tables.git 2、entity、mapper、service、controller 使用了 MyBatisPlus 代码生成器,自动生成大部分基础代码,操作方法见之前文章...、setter 省略 五、测试接口 1、没有关联分页查询接口 http://localhost/common/getAllQuestionByPage/1/2 ① json 输出 {...: ①网上有做法不合时宜文章(自定义page类、配置版) ②官方文档使用是配置版,笔者采用注解版 MyBatis 配置版 MyBatis 注解版 ① 动态 sql 灵活、② xml 格式 sql

5.7K20

带你学习简单分页插件PageHelper

正文 引言: PageHelper是国内非常优秀一款开源mybatis分页插件,它支持基本主流与常用数据库, 例如mysql、 oracle、mariaDB、 DB2、 SQLite、Hsqldb...今天墨白就给大家聊聊PageHelper这款分页插件,下面是PageHelper开源地址,感兴趣小伙伴可以去看一下 PageHelper在 github 项目地址: https://github.com...这里我只介绍两个常用,详细可以去看官网API文档 helperDialect: 分页插件会自动检测当前数据库链接,自动选择合适分页方式。...你也可以实现 AbstractHelperDialect,然后配置该属性为实现类全限定名称即可使用自定义实现方法。 reasonable: 分页合理化参数,默认值为false。...4.在代码中使用两种方式: 第一种 1// 此语句后第一个select查询自动会被分页 2PageHelper.startPage(1, 10); 3// 这里查询会自动分页 4List<Country

81310

Django实现任意文件上传(简单方法

利用Django实现文件上传并且保存到指定路径下,其实并不困难,完全不需要用到djangoforms,也不需要djangomodels,就可以实现,下面开始实现。...):   if request.method == "POST":    # 请求方法为POST时,进行处理         myFile =request.FILES.get("myfile", ...在进行进一步代码解释之前,需要先讲几个关于上传文件方法和属性: myFile.read():从文件中读取整个上传数据,这个方法只适合小文件; myFile.chunks():按块返回文件,通过在...for循环中进行迭代,可以将大文件按块写入到服务器中; myFile.multiple_chunks():这个方法根据myFile大小,返回True或者False,当myFile文件大于2.5M(默认为...2.5M,可以调整)时,该方法返回True,否则返回False,因此可以根据该方法来选择选用read方法读取还是采用chunks方法:       if myFile.multiple_chunks()

5.1K80

Django 教程_简单剪花朵步骤

例如tornado用是自己异步非阻塞“wsgi”,flask则只提供了精简和基本框架。Django则是直接使用了WSGI,并实现了大部分功能。 2....通俗解释:一种文件组织和管理形式!不要被缩写吓到了,这其实就是把不同类型文件放到不同目录下一种方法,然后取了个高大上名字。...编写路由 路由都在urls文件里,它将浏览器输入url映射到相应业务处理逻辑。 简单urls编写方法如下图: 编写业务处理逻辑 业务处理逻辑都在views.py文件里。...至此,一个简单django编写web服务就启动成功了。 返回HTML文件 上面我们返回给用户浏览器是什么?一个字符串!实际上这肯定不行,通常我们都是将html文件返回给用户。...至此,一个要素齐全,主体框架展示清晰django项目完成了,其实很简单是不是?

96040

CSS实现简洁开关

目前最常见开关是这种圆形风格:(若干年后就不一定了) 网上也有很多用CSS和HTML实现例子,但都不完美,因为往往需要多个html元素配合才能实现这种开关,如何用一个传统<input type...最近终于找到了方法:使用CSS伪元素 :before 和 :after 来作为额外元素,用纯CSS实现一个简洁又好看、一个元素搞定开关。...nowrap; color: white; font: 14px/30px monospace; font-weight: bold; } 于是就实现了一个简洁开关...)"/> 最后再增加一些锦上添花效果,利用 :checked 选择器表示“开”状态,通过 :hover 选择器表示光标悬浮状态: input[type="checkbox"]:hover:before...,将上述所有的css汇聚到中,然后直接使用就可以了,既简单又漂亮,哪用得着那么多UI库啊,现在CSS越来越强大了,很多UI效果都不需要JS

2.4K30

简单BERT模型调用方法

本文地址:https://github.com/qhduan/bert-model BERT Models 注达到本文效果基本要求Tensorflow 2.0 也许,是简单BERT预加载模型。...当然,实现起来是有一些tricky,而且tokenizer并不是真正berttokenizer,中文大部分不会有太大问题,英文的话实际上因为考虑BPE,所以肯定是不行。...本项目重点在于,实际上我们是可以通过非常非常简单几行代码,就能实现一个几乎达到SOTA模型。...BERT分类模型(pool模式) 返回一个1x768张量,相当于句子固定长度Embedding 根据一个实际Chinese GLUE测试样例:COLAB DEMO import tensorflow_hub...chinese_roberta_wwm_ext_L-12_H-768_A-12/raw/master/pool.tar.gz') # y.shape == (1, 768) y = model([['我爱你']]) 一个非常简单分类例子

2.8K10

使用Django构建即时通讯应用简单方法

使用Django构建即时通讯应用简单方法 原文:《The simplest way to build an instant messaging app with Django》 https://www.photondesigner.com...添加模板 模板中包括一个 EventSource 脚本,用于接收来自 Django 服务器发送事件。 在sim下创建templates文件夹,在templates下创建chat.html。...创建 Django 模型来存储要实时发送数据 将以下内容添加到 sim/models.py : from django.db import models class Author(models.Model...但是,有一种变通方法,就是服务器向客户端声明,接下来要发送是流信息(streaming)。也就是说,发送不是一次性数据包,而是一个数据流,会连续不断地发送过来。...StreamingHttpResponse使用方法与常规HttpResponse类似,只需将生成数据逻辑写入一个生成器函数,并将该函数作为StreamingHttpResponse参数传入即可

20310

CSS实现简洁加载动画

纯CSS能实现功能越来越多了,能用css实现就别用js,今天教大家用最短代码实现下面这个加载动画,这个加载动画优势不仅是短小,而且不需要额外dom元素就可实现,因此在那些异步加载dom身上使用非常方便...如图,我们要在任何一个dom元素背景上播放这样横条,首先想到是利用repeating-linear-gradient()重复线性渐变函数(渐变函数常常被用来做突变图),然后设置背景图尺寸和位置,...禁用Y方向上瓦片重复,但启用X方向上重复,因为隐藏掉X重复,我们小矩形是这样运动: 只要调整合适时间间隔,往复循环,就可以无缝地首尾衔接,营造出连续运动效果,这里我特地让条纹与水平线呈30...°夹角,因为这样直角三角形中,斜边正好是短边2倍,易于计算,其中短边就是一对条纹厚度,斜边则是小矩形宽度,同时还要将单条纹厚度作为可变量w,那么黑白双条纹厚度就是2w,小矩形宽度和运动距离就是是...4w,虽然用CSS实现更简单,但是为了控制动画生命周期,统一用JS来做吧: // 条纹厚度 const w = 3; // 加载动画容器 const loading = document.getElementById

1.1K20
领券