📅  最后修改于: 2023-12-03 15:00:27.883000             🧑  作者: Mango
Django是一个强大的Web框架,它可以快速创建可扩展和可维护的Web应用程序。
本文将介绍在Django中创建一个注释系统的步骤。我们将使用Django的ORM来管理数据模型,并使用Django模板语言来渲染视图。
首先,我们需要创建一个Django项目。执行以下命令:
django-admin startproject commentsystem
现在我们需要在Django项目中创建一个新的应用程序。执行以下命令:
python manage.py startapp comments
我们需要定义注释模型,以便将注释保存到数据库中。在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}"
该模型定义了注释的作者、注释文本、注释创建时间以及注释更新时间。
现在我们需要为注释创建一个表单,以便用户可以提交注释。在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
,以便用户可以输入多行文本。
现在我们需要创建一个视图,以便用户可以查看注释列表和提交新注释。在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
创建一个新的注释。如果表单被提交并有效,则将注释保存到数据库并重置表单。
现在我们需要创建一个模板以显示注释列表和注释表单。在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 %}
该模板显示注释表单和所有注释。如果没有注释,则显示“尚未有评论”的消息。
最后,我们需要将注释视图注册到Django URLconf中。在comments/urls.py
文件中创建以下URLconf:
from django.urls import path
from . import views
urlpatterns = [
path("", views.comment_list, name="comment_list"),
]
该URLconf将根路径映射到评论视图。
现在,你已经学习了如何在Django中创建注释系统。你可以继续扩展该系统以方便用户进行评论,例如添加评论的回复和嵌套注释。