Django学习笔记六:form表单实现评论(检验数据合法性)

本文介绍了使用Django框架实现博客评论功能的过程,包括数据库设计、评论表单模板的创建、URL绑定和视图函数的编写。通过Django的form表单功能,实现了数据的合法性检查,并利用重定向方法实现在评论提交后无需刷新即可显示新评论。文章总结了Django表单的自动检验和重定向功能,并提供了项目的GitHub链接和参考资料。
摘要由CSDN通过智能技术生成

最近一直想给博客更新一个模板,找了好多的静态模板,不知道怎么用,这几天特意花点时间在这个事情上,主要是静态文件的存放路径,好复杂呀,花了近两天时间才豁然开朗,特找了一个模板放在博客上,同时完善了博客的评论功能。
静态模板来自点击打开链接(花了我5个大洋换了500个积分,然而就用了20个积分生气)

运行效果

先上图看看效果:(是不是比之前的好看多了)
这里写图片描述

替换模板是个繁琐的项目。在这里就不多记录啦。
主要记录学习到了评论功能的实现。
评论功能作为单独的一个功能,把它作为一个单独的app,关于django框架设计的基本流程都是一样的:
设计数据库(M)-设计模型(V)-编写模板(T)
省略前面的建立app

评论功能分析

  • 属性(5)
    姓名,邮箱,电话,评论内容,创建时间
  • 关系
    一篇文章可以有多个评论
    一个评论只能是一篇文章
    so:
    文章-评论 一对多
    知道了属性和关系,下面就很好设计了

数据库设计

# -*-coding:utf -*-
from django.db import models

# Create your models here.
class Comment(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=255)
    phone = models.CharField(max_length=20)
    text = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)

    article = models.ForeignKey('blog.Article')

    def __str__(self):
return self.text[:20]

设计评论表单模板

通常提交评论时需要检验评论者的邮箱,电话等内容是否正确,这里用到了django中form表单的功能,功能具体实现流程:
这里写图片描述
下面就是将流程转换为代码:

评论表单

comments/forms.py
# -** coding:utf-8 -*-
from django import forms
from .models import Comment

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
fields = ['name', 'email', 'phone','text']

绑定url和视图函数

comments/urls.py
from django.conf.urls import url
from . import views

app_name = 'comments'
urlpatterns = [

   url(r'^comment/article/(?P<article_id>[0-9]+)/$', views.article_comment, name='article_comment')
]

视图函数

comments/views.py
# -*- coding:utf-8 -*-
from django.shortcuts import render, get_object_or_404, redirect
from blog.models import Article

from .models import Comment
from .forms import CommentForm
# Create your views here.
def article_comment(request, article_id):

    #获取文章存在是获取给post, 反之返回404页面
    article = get_object_or_404(Article, id = article_id)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值