0

我正在使用 django 和 jquery 进行一个项目,我必须实现像 facebook 这样的评论,我不知道该怎么做。请我需要您的帮助,并且需要您对代码非常具体,因为我是新手。

这是代码,请告诉我我缺少什么。

Javascript

<script type="text/javascript">
    $(document).ready(function() {
      $('#category_form').submit(function(e) {
      e.preventDefault();
      $.ajax({
        type: 'POST',
        url: '{% url pos.views.add_category %}',
        data: $('#category_form').serialize(),
        dataType: 'json',
        success: function() {
          location.reload();
    $('#category_form').get(0).reset();
      },
     });
     return false;
     });
    });
</script>

形式

    class CategoryForm(ModelForm):
    name = forms.CharField(label=(u'Categoria'))
    class Meta:
     model = Category

网址

    url(r'^category/$', 'pos.views.Categories'),

看法

    def add_comment(request):
     if request.method == 'POST' and request.is_ajax():
      category_form = CategoryForm(request.POST)
      if category_form.is_valid():
       category = category_form.save(commit=True)
       category.save()
       json = simplejson.dumps(category, ensure_ascii=False)
       return HttpResponse(json, mimetype='application/json')
    return render_to_response(simplejson.dumps({'category': category,}),        context_instance=RequestContext(request), mimetype='application/json')
4

2 回答 2

0

我认为要发布评论,您将遇到的主要问题是登录,在此之前您需要授权用户,对于授权用户,您可以使用django-social-auth

正如您所说,保存后您想做某事,您可以通过覆盖模型中的保存功能来做到这一点。例如

class Updates(models.Model) 
    ...........
    ...........

    def save():
        super(save())
        ....................
        # Do your job here
        ....................

谢谢

于 2012-10-02T08:22:13.263 回答
0

你的观点有两个回报

return HttpResponse(json, mimetype='application/json')
return render_to_response(simplejson.dumps({'category': category,}),        context_instance=RequestContext(request), mimetype='application/json')

摆脱你不需要的那个。(很难从格式错误的代码中判断您需要什么。)

Read the jQuery docs here: http://api.jquery.com/jQuery.ajax/

Specifically, check out the Callback Function Queues section

Change your javascript so ajax does something like this instead:

    $.ajax({
        type: 'POST',
        url: '{% url pos.views.add_category %}',
        data: $('#category_form').serialize(),
        dataType: 'json',
        success: function(data) {
            $("#results").html(data);
        }
            ...

This uses the success callback to set the returned data (the json returned from your view) as the html data of the element with the ID "results" in your HTML.

于 2012-10-03T04:19:24.930 回答