📜  Django项目创建一个注释系统(1)

📅  最后修改于: 2023-12-03 15:00:27.883000             🧑  作者: Mango

使用Django创建注释系统

Django是一个强大的Web框架,它可以快速创建可扩展和可维护的Web应用程序。

本文将介绍在Django中创建一个注释系统的步骤。我们将使用Django的ORM来管理数据模型,并使用Django模板语言来渲染视图。

步骤
步骤 1:创建Django项目

首先,我们需要创建一个Django项目。执行以下命令:

django-admin startproject commentsystem
步骤 2:创建Django应用程序

现在我们需要在Django项目中创建一个新的应用程序。执行以下命令:

python manage.py startapp comments
步骤 3:创建注释模型

我们需要定义注释模型,以便将注释保存到数据库中。在comments/models.py文件中创建以下模型:

from django.db import models
from django.contrib.auth.models import User

class Comment(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    text = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.author} - {self.created_at}"

该模型定义了注释的作者、注释文本、注释创建时间以及注释更新时间。

步骤 4:创建注释表单

现在我们需要为注释创建一个表单,以便用户可以提交注释。在comments/forms.py文件中创建以下表单:

from django import forms
from .models import Comment

class CommentForm(forms.ModelForm):
    text = forms.CharField(widget=forms.Textarea)

    class Meta:
        model = Comment
        fields = ["text"]

表单使用Django的ModelForm,它根据模型自动生成表单字段。我们还将text字段的小部件定为Textarea,以便用户可以输入多行文本。

步骤 5:创建评论视图

现在我们需要创建一个视图,以便用户可以查看注释列表和提交新注释。在comments/views.py文件中创建以下视图:

from django.shortcuts import render
from .models import Comment
from .forms import CommentForm

def comment_list(request):
    comments = Comment.objects.all()
    form = CommentForm()

    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.author = request.user
            comment.save()
            form = CommentForm()

    return render(request, "comments/comment_list.html", {"comments": comments, "form": form})

该视图从数据库中获取所有注释,并使用CommentForm创建一个新的注释。如果表单被提交并有效,则将注释保存到数据库并重置表单。

步骤 6:创建注释模板

现在我们需要创建一个模板以显示注释列表和注释表单。在comments/templates/comments/comment_list.html文件中创建以下模板:

{% extends "base.html" %}

{% block content %}
  <h1>Comments</h1>

  <form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <button class="btn btn-primary" type="submit">Post Comment</button>
  </form>

  <hr>

  {% for comment in comments %}
    <div class="card mb-3">
      <div class="card-body">
        <h5 class="card-title">{{ comment.author }} <small>{{ comment.created_at }}</small></h5>
        <p class="card-text">{{ comment.text }}</p>
      </div>
    </div>
  {% empty %}
    <p>There are no comments yet.</p>
  {% endfor %}
{% endblock %}

该模板显示注释表单和所有注释。如果没有注释,则显示“尚未有评论”的消息。

步骤 7:注册URL

最后,我们需要将注释视图注册到Django URLconf中。在comments/urls.py文件中创建以下URLconf:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.comment_list, name="comment_list"),
]

该URLconf将根路径映射到评论视图。

结论

现在,你已经学习了如何在Django中创建注释系统。你可以继续扩展该系统以方便用户进行评论,例如添加评论的回复和嵌套注释。