Django ::在javascript中创建新对象

时间:2014-08-21 21:59:57

标签: javascript django

我希望能够创建一个名为' Comment'的新Django对象。在javascript。

(据我所知,你不能像在视图方法中那样简单地声明一个新对象)

我需要允许用户回复现有评论。

如果用户按下'回复'按下注释,下面会显示一个表单,并在js变量中保存用户想要回复的注释的ID。

然而,我正在努力寻找一种方法来最终提交所有这些,以便我可以发布一个新的子评论。

有没有一种简单的方法可以达到这个目的?

1 个答案:

答案 0 :(得分:3)

我会用ajax做到这一点。如果您正在使用jQuery,您可以使用类似的东西:

假设您有一个名为home.html的模板,您可以在其中管理评论和所有内容。

home.html的

<ul class="comments">
    <li data-id="1">This is a comment...</li>
</ul>

<textarea id="new_comment"></textarea>
<button type="button" id="send">Post comment!</button>

urls.py

url(r'^comment/$', 'core.views.comment', name='comment'),

views.py

def comment(request):
    c = Comment()
    c.text = request.GET.get('text')
    c.save()
    return render(request, 'core/partial_comment.html', { 'comment': c })

芯/ partial_comment.html

<li data-id="{{ comment.id }}">{{ comment.text }}</li>

现在您需要一个jQuery代码段来向服务器发送异步请求,以便您可以创建新的注释:

$(function () {
    $("#send").click(function () {
        $.ajax({
           url: '/comment/',
           data: { 'text': $("#new_comment").val() },
           type: 'get',
           cache: false,
           success: function (data) {
              $(".comments").append(data);
           }
        });
    });
});

所以,让我们了解刚刚发生的事情:

用户来到ID为new_comment

的textarea上写评论

ID为“send”的按钮正在侦听点击事件

当用户点击此按钮时,它会向服务器发送一个ajax请求,其中包含我们称之为“text”的数据。然后,您在服务器上,您可以创建您的Comment对象。保存后,您将响应返回给客户端。 ajax调用中的“data”变量将捕获结果,即“&lt; li data-id =”2“&gt;他所评论的内容......&lt; / li&gt;”。然后将它附加到在html视图中存储注释的元素