如何动态更新模板中的对象?

时间:2019-11-01 14:59:19

标签: python django

我在页面上对某个产品有评论。还有一个用于添加注释的按钮,该注释将新注释添加到数据库中。如何自动在页面上显示新评论?

mytemplate.html

<div id="comments">
{% include 'comments.html' %}
</div>

comments.html

{% for comment in comments %}
        <!-- some code for display comments -->
{% endfor %}

script.js

$("#addComment").on("click", function(e){
        e.preventDefault()
        if ($("#addCommentArea").val() != ""){
            data = {
                commentText: $("#addCommentArea").val(),
                product_id: "{{ product.id }}"
            }
            $.ajax({
                type: "GET",
                url: "{% url 'newcomment' %}",
                datatype: 'json',
                data: data,
                success: function(data){
                    $("#addCommentArea").val("")
                }
            })
        }
    })

views.py

class CommentView(View):
    def get(self, request):
        commentText = request.GET.get("commentText")
        if (len(commentText) > 0):
            newComment = Comment()
            newComment.Author = request.user
            product_id = request.GET.get("product_id")
            product = Product.objects.get(id=product_id)
            newComment.Product = product
            newComment.Comment = commentText
            newComment.save()
        return JsonResponse({'ok': 'ok'})

1 个答案:

答案 0 :(得分:0)

当前,您只需渲染一次模板并获取注释,然后再使用Ajax提交,这意味着您的模板不会更新。要在不刷新页面的情况下更新评论,您可以进行JavaScript轮询或使用例如Web套接字