Django(二)精美博客搭建(12)实现评论功能

本篇博客介绍如何在Django项目中为文章详情页添加评论功能,包括urls.py、views.py、models.py的代码实现,以及数据库迁移和 Templates 模块中的 info.html 和 info.css 文件的样式调整。
摘要由CSDN通过智能技术生成

前言

本章主要讲述 【文章详情页实现评论功能】

  • 这功能比较简单,样式的话你们觉得丑可以自己再调整一下哈,这个底色调了我挺久虽然还是觉得怪怪的

环境:

  • Pycharm
  • python3.6
  • mysql 5.7
  • django 2.0.13


一、新功能项目概览

在这里插入图片描述


二、Article应用具体代码实现

1、urls.py

# 评论
path('comment', article_comment, name='comment'),

在这里插入图片描述


2、views.py

在这里插入图片描述

def article_comment(request):
    """
    文章评论
    :param request:
    :return:
    """
    # 拿到前端传的值
    nickname = request.GET.get('nickname')
    content = request.GET.get('saytext')
    aid = request.GET.get('aid')
    # 保存数据库
    comment = Comment.objects.create(nickname=nickname, content=content, article_id=aid)
    if comment:
        data = {
   'status': 1}
    else:
        data = {
   'status': 0}
    return JsonResponse(data)

3、models.py

在这里插入图片描述

class Comment(models.Model):
    """
        文章评论表
    """
    nickname = models.CharField(verbose_name='昵称', max_length=16, null=True)
    content = models.CharField(verbose_name='内容', max_length=240)
    create_time = models.DateTimeField(verbose_name='评论时间', auto_now=True)
    # 文章和评论为一对多
    article = models.ForeignKey(to=Article, on_delete=models.CASCADE, verbose_name='文章')

    def __str__(self):
        return self.nickname

    class Meta:
        db_table = 'article_comment'
        verbose_name = "评论"
        verbose_name_plural = verbose_name

4、迁移数据库

  • 注意:只要models进行修改了,都要记得迁移数据库哈
python manage.py makemigrations
python manage.py migrate


三、Templates模块具体代码实现

1、info.html

  • 直接在原来的文章详情里面添加即可

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Django实现评论功能,一般需要以下步骤: 1. 创建Comment模型并与其他模型进行关联,例如某篇文章的评论。 2. 编写CommentForm表单,用于接收用户提交的评论内容。 3. 在视图函数中处理表单数据,验证并保存评论数据库。 4. 在模板中展示评论列表和评论表单。 下面是一个简单的实现过程: 1. 创建Comment模型 ```python from django.db import models from django.contrib.auth.models import User class Comment(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) content = models.TextField() created_time = models.DateTimeField(auto_now_add=True) article = models.ForeignKey('Article', on_delete=models.CASCADE) def __str__(self): return self.content ``` 2. 编写CommentForm表单 ```python from django import forms class CommentForm(forms.Form): content = forms.CharField(widget=forms.Textarea) ``` 3. 编写视图函数 ```python from django.shortcuts import render, get_object_or_404, redirect from .models import Article, Comment from .forms import CommentForm def article_detail(request, pk): article = get_object_or_404(Article, pk=pk) comments = Comment.objects.filter(article=article) if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.user = request.user comment.article = article comment.save() return redirect('article_detail', pk=article.pk) else: form = CommentForm() return render(request, 'article_detail.html', {'article': article, 'comments': comments, 'form': form}) ``` 4. 在模板中展示评论列表和评论表单 ```html {% extends 'base.html' %} {% block content %} <h1>{{ article.title }}</h1> <p>{{ article.content }}</p> <h2>Comments</h2> <ul> {% for comment in comments %} <li>{{ comment.content }}</li> {% empty %} <li>No comments yet.</li> {% endfor %} </ul> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Submit</button> </form> {% endblock %} ``` 以上是一个简单的评论功能实现过程,需要根据具体情况进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M1kasal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值