[Django学习]Django基础(15)_ajax的评论提交

一 功能介绍

  点击“评论”按钮时,不刷新页面,将评论内容直接插入下方的评论列表中。

  [Django学习]Django基础(15)_ajax的评论提交_第1张图片

二 实现方式

1. 为评论框表单设置id属性

// 为评论框表单设置id属性comment_form
{% csrf_token %} {% for field in comment_form %} {{ field }} {% endfor %} // 添加错误提示框,并设置其id属性comment_error

2. 在{% url 'update_comment' %}对应的方法中添加要返回到当前页面的数据

from django.shortcuts import render, redirect
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from django.http import JsonResponse
from .models import Comment
from .forms import CommentForm
# Create your views here.

def update_comment(request):
	referer = request.META.get('HTTP_REFERER',reverse('home'))
	comment_form = CommentForm(request.POST, user=request.user)
	data = {}
	if comment_form.is_valid():
                # 要接收并保存的数据
		comment = Comment()
		comment.user = comment_form.cleaned_data['user']
		comment.comment_text = comment_form.cleaned_data['comment_text']
		comment.content_object = comment_form.cleaned_data['content_object']
		comment.save()

		# 要返回的返回数据
		# status 标记评论是否验证成功
		data['status'] = 'Success'
                #评论列表中的单条评论格式如下:
                #angryze (2018-11-27 15:00:37):
                #444
                #因此返回的数据中需要三个要素:
                #username 对应 angryze 
		data['username'] = comment.user.username
                #comment_time 对应 (2018-11-27 15:00:37)
		data['comment_time']=comment.comment_time.strftime('%Y-%m-%d %H:%M:%S')
                #text 对应 444
		data['text']=comment.comment_text
	else:
		data['status'] = 'Error'
		data['message'] = list(comment_form.errors.values())[0][0]
        // 以Json格式返回数据
	return JsonResponse(data)            

3. 在模版页面中添加javascript语句

        

  


  注明:学习资料来自“再敲一行代码的个人空间”以及“杨仕航的博客”

 

 

你可能感兴趣的:([Django学习]Django基础(15)_ajax的评论提交)