Django富文本编辑和ajax提交评论
Posted 滑稽研究所
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django富文本编辑和ajax提交评论相关的知识,希望对你有一定的参考价值。
哈喽,大家好呀,我是滑稽君。记得之前我们为博客编辑增加的富文本编辑器吗?这次我们为评论功能也加上去。我们还需要用到Ajax使我们的评论变成异步提交。
视频讲解:
CKEDITOR_CONFIGS = {
'default':{},
'comment_ckeditor': {
'toolbar': 'custom',
'toolbar_custom': [
['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript'],
["TextColor", "BGColor", 'RemoveFormat'],
['NumberedList', 'BulletedList'],
['Link', 'Unlink'],
["Smiley", "SpecialChar", 'Blockquote'],
],
'width': 'auto',
'height': '180',
'tabSpaces': 4,
'removePlugins': 'elementspath',
'resize_enabled': False,
}
}
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.text = comment_form.cleaned_data['text']
comment.content_object = comment_form.cleaned_data['content_object']
comment.save()
# 返回数据
data['status'] = 'SUCCESS'
data['username'] = comment.user.username
data['comment_time'] = comment.comment_time.strftime('%Y-%m-%d %H:%M:%S')
data['text'] = comment.text
else:
#return render(request, 'error.html', {'message': comment_form.errors, 'redirect_to': referer})
data['status'] = 'ERROR'
data['message'] = list(comment_form.errors.values())[0][0]
return JsonResponse(data)
{% block script_extends %}
<script type="text/javascript">
$("#comment_form").submit(function(){
// 判断是否为空
$("#comment_error").text('');
if(CKEDITOR.instances["id_text"].document.getBody().getText().trim()==''){
$("#comment_error").text('评论内容不能为空');
return false;
}
// 更新数据到textarea
CKEDITOR.instances['id_text'].updateElement();
// 异步提交
$.ajax({
url: "{% url 'update_comment' %}",
type: 'POST',
data: $(this).serialize(),
cache: false,
success: function(data){
console.log(data);
if(data['status']=="SUCCESS"){
// 插入数据
var comment_html = '<div>' + data['username'] +
' (' + data['comment_time'] + '):' +
data['text'] + '</div>';
$("#comment_list").prepend(comment_html);
// 清空编辑框的内容
CKEDITOR.instances['id_text'].setData('');
}else{
// 显示错误信息
$("#comment_error").text(data['message']);
}
},
error: function(xhr){
console.log(xhr);
}
});
return false;
});
</script>
{% endblock %}
仅展示部分源码,更细节的内容我们放在视频中为大家演示,全部源码放百度云啦~
https://pan.baidu.com/s/1tUJ3x9l_Dq1EvmTtMT4GOQ
公众号内发送django获取提取码。
学习素材来自:https://space.bilibili.com/252028233
有什么疑问看视频呦。
以上是关于Django富文本编辑和ajax提交评论的主要内容,如果未能解决你的问题,请参考以下文章
JS周刊#405 - 精通模块化 JS,Parcel 1.10.0 发布,Trix 1.0 富文本编辑器,创建虚拟鸟类的簇拥行为