2012-02-25 3 views
1

django에서 ajax 사용에 대한 통찰력 및 팁을 얻으 려합니다.Django, jquery 및 modelforms

def add_comment(request, pk): 
    if request.method == 'POST' and request.is_ajax(): 
    comment_form = CommentForm(request.POST) 
    if comment_form.is_valid(): 
     comment = comment_form.save(commit=True) 
     comment.save() 
    json = simplejson.dumps(comment, ensure_ascii=False) 
    return HttpResponse(json, mimetype='application/json') 
    return render_to_response({{ post.id }}', {'comment': comment,}), context_instance=RequestContext(request), mimetype='application/json') 

내가 아약스 기능 리디렉션하지 않고 페이지에 대한 의견을 게시하기 위해 노력하고있어 : 내가가 혼합있어 생각

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script></javascript> 
<script type="text/javascript"> 
    $(document).click(function() 
    { 
    $('#comment_form').submit(function() 
    { 
    var dataString = $('#comment_form').serialize(); 
    $.ajax({ 
     type: 'POST', 
     url: '', 
     data: dataString, 
     success: function(data){ 
     $('').html(data); 
     }, 
    }); 
    return false; 
    }); 
    }); 

</script> 

내가 기능을 말해봐 여기 몇 가지. 나는 리다이렉트 (redirect)없이 코멘트를로드하는 페이지를 얻으려고 노력하고있다. 나는 정확한 대답을 필요로하지 않고, 아마도 올바른 방향으로 조종했을 것입니다.

+0

무엇이 질문입니까? – Yann

+0

나는 django와 ajax를 사용하여 의견을 게시하는 방법에 대한 통찰력과 조언을 구했다. 게시물 상단에, 그것은 명확하지 않았습니까? – tijko

+0

당신은 장고와 아약스에 익숙한가요? 나는 당신의 프로필을 보았습니다. 당신은 단지 matplot으로 질문에 답하는 것처럼 보입니다. 통찰력이 있다면 공유하십시오. – tijko

답변

0

감사합니다 . jquery가 주요 문제였습니다.

$(document).ready(function() { 
    $('#comment_form').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
    type: 'POST', 
    url: '{% url art.views.post %}', 
    data: $('#comment_form').serialize(), 
    dataType: 'json'; 
    success: function(){ 
     location.reload(); 
$('#comment_form').get(0).reset(); 
    }, 
    }); 
    return false; 
    }); 
}); 

DOM 개체를 실제 양식 데이터가 아닌보기로 보냈습니다.

두 개의 함수를 결합하여 동일한 URL을 공유하는 두 개의 함수를 결합했습니다.

def post(request, pk): 
    post = Post.objects.get.(pk=int(pk)) 
    comments = Comment.objects.filter(post=post) 
    _dict = dict(post=post, comments=comments, form=Comment_form(), user=request.user) 
    _dict.update(csrf(request)) 
    cf_obj = Comment(post = Post.objects.get(pk=pk)) 
    if request.method == 'POST' and request.is_ajax(): 
    if comment_form.is_valid(): 
     comment = comment_form.save(commit=True) 
    else: 
     raise Http404 
    response = serializers.serialize('json', [comment]) 
    return HttpResponse(response, mimetype='application/json') 
    return render_to_response('post.html', d) 
2

이 캔 도움 :

이보기 수 :

import json 

def add_comment(request, pk): 
    if request.method == 'POST' and request.is_ajax(): 
     comment_form = CommentForm(request.POST) 
     if comment_form.is_valid(): 
      comment = comment_form.save(commit=True) 
      comment.save() 
      json_response = json.dumps({"status":"Success"}) 
      return HttpResponse(json_response) 
     errors = {} 
     for k, v in job_type_form.errors.items(): 
      errors[k.capitalize()] = v 
     response = { 
      'success': False, 
      'errors': errors 
     } 
     return HttpResponse(json.dumps(response)) 

와 JQuery와 같이 수 : 일이 밖으로 일 드디어받은 게시물에 대한

$('#comment_form').submit(function() { 
    var dataString = $('#comment_form').serialize(); 
    $.ajax({ 
     type: 'POST', 
     url: '',// you need to put this to something like '{% url to_your_view %}' 
     data: dataString, 
     dataType: 'json' 
     success: function(data){ 
      // you can access to your json object like data.status or data.something 
      $('').html(data.status); 
     }, 
    }); 
    return false; 
}); 
+0

안녕하세요, 먼저 응답 해 주셔서 감사합니다. 나는이 코드를 수정하려고한다. 보려는 URL을 다루는 아약스 함수에 대한 의견은 "{{post.id}}"에 넣었지만 작동하지 않았습니다. 리디렉션없이 페이지에 바로 의견을 게시하려고합니다. 나는 성공 페이지로 돌아갈 많은 정보를 발견했다. 나는 이미 글을 올릴 수 있었지만, 메인 페이지로만 리다이렉트했다. – tijko

+0

이것을 시도하고 그 주위를 어루 만져도 여전히 작동하지 않았습니다. 나는 모든 것을 다시 할 것입니다. – tijko

+0

거기에 몇 가지 구문 오류가 있다고 생각합니다. – tijko