使用Dajax Django为帖子添加评论。

时间:2012-07-03 19:42:33

标签: django dajaxice

我想在django中通过dajax技术添加评论,但这些东西不起作用。你可以帮我解决这个问题吗?或者在这个例子中说明如何使用dajax。

ajax.py

@dajaxice_register

def add_comment(request):

`if request.method == 'POST':
    post_id = request.POST['post_id']    
    post_obj = Post.objects.get(id = post_id)
    error = {}
    iweb_obj = post_obj.topic.iweb  
    content = request.POST['content']
    img = request.POST['img']       
    if len(content) == 0:
        error[content] = 'Write something'
    else:
        new_comment = Comment(img=img, post=post_obj, content=content, author=request.user, pub_date=datetime.datetime.now())        
        new_comment.save()

        comment = render_to_response('comment.html',{'comment':new_comment})
        dajax = Dajax() 
        dajax.assign('#post-' +int(post_id)+ ' comments', innerHTML, comment)   
        return dajax.json() `

HTML post代码,其中应添加注释。 table width="100%" id="post-{{ post.post.id }}"

帖子在这里

ul class="comments" {% include "comments.html" %} /ul

/table

JS代码,但是comment_form在另一个模板中。

$('.comment_form form').submit(function() {

    `var form = $(this);

    if($('textarea', form).val().length > 1) {
            Dajaxice.project.add_comment(Dajax.progress,{});
            $('textarea', form).val('');

                }
            }

     )});`

2 个答案:

答案 0 :(得分:0)

一些实际的错误消息会有所帮助 - “这些东西不起作用”是一种与神秘的Dajax错误消息“出错”的匹配,但也许你可以提供一些额外的信息。

我注意到你的js提交功能有:

Dajax.progress   // which should be Dajax.process

Firebug或Chrome的控制台应该可以帮助您解决这样的错误

答案 1 :(得分:0)

如果不查看完整的代码,很难确切地看出出了什么问题,但从上面的内容可以看出,我可以看到几个问题:

  1. 您不应使用render_to_response生成comment的值。与正常的Django视图不同,在这里您返回一个HttpResponse,在这里您使用Dajax.assign将HTML元素的实际内容设置为字符串。幸运的是Django只提供了你需要的模板渲染功能:render_to_string。改用它。

  2. Dajax.assign行中,您使用的选择器,例如'#post-23 comments'看起来与HTML不对应,其中comments是一个类而不是元素名称。

  3. 在同一行中,innerHTML应为'innerHTML'(即引用)。

  4. 在提及烤面包机时,Dajax.progress应为Dajax.process

  5. 对于以类似方式使用Dajaxice / Dajax的带注释的示例,您可能会发现我对Django and Ajax - What can I do?的回答很有帮助。