programing

장고에서 jQuery/Ajax와 함께 포스팅하려면 어떻게 해야 합니까?

lastcode 2023. 10. 29. 19:45
반응형

장고에서 jQuery/Ajax와 함께 포스팅하려면 어떻게 해야 합니까?

장고에서 jQuery/AJAX를 이용하여 자료를 올리려고 하는데 문제가 있습니다.아래 코드를 실행하고 'test' 버튼을 클릭하면 페이지 전체가 다시 로드되는데, 이는 제가 원하는 일이 아닙니다(그래서 AJAX를 사용하고 있습니다).

저도 AJAX 요청이 장고 뷰에 도달하는 것을 확인할 수 없습니다.

편집: 반품을 위한 편집을 허위로 했고,event.preventDefault(). 새 페이지가 로드되지는 않지만 업데이트된 텍스트가 계속 보이지 않습니다.<div id='message'>필드. 데이터가 전송되고 있는지 확실하지 않습니다.콘솔에서 보고 있습니다.

POST /edit_favorites/ HTTP/1.1" 403 2294

views.py :

from django.shortcuts import render_to_response
from django.http import HttpResponse

def edit_favorites(request):
    if request.is_ajax():
        message = "Yes, AJAX!"
    else:
        message = "Not Ajax"
    return HttpResponse(message)

urls.py :

url(r'^edit_favorites/', 'edit_favorites'),

HTML:

<form method='post' id='test'>
  <input type="hidden" value="video34"/>
  <input type='submit' value='Test button'/>
  <div id='message'>Initial text</div>
</form>

자바스크립트:

$(document).ready(function () {
  $("#test").submit(function (event) {
    event.preventDefault();
    $.ajax({
      type: "POST",
      url: "/edit_favorites/",
      data: {
        'video': $('#test').val() // from form
      },
      success: function () {
        $('#message').html("<h2>Contact Form Submitted!</h2>")
      }
    });
    return false;
  });
});

조언 좀 해주세요.

위치가 잘못됨return false;. 그것은 끝에 있어야 합니다..submit()기능.따라서 한 줄 위로 이동합니다.

$(document).ready(function () {
  $("#test").submit(function (event) {
    $.ajax({
      type: "POST",
      url: "/edit_favorites/",
      data: {
        'video': $('#test').val() // from form
      },
      success: function () {
        $('#message').html("<h2>Contact Form Submitted!</h2>")
      }
    });
    return false; //<---- move it here
  });

});

업데이트:

이슈에 대하여POST /edit_favorites/ HTTP/1.1" 403 2294. 귀하의 문제와 유사한 이 게시물을 확인해 보십시오.

다음 방법들이 저에게 효과가 있었습니다. 그리고 저도 당신에게 도움이 되길 바랍니다.

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse

@csrf_exempt
def edit_favorites(request):
    if request.is_ajax():
        message = "Yes, AJAX!"
    else:
        message = "Not Ajax"
    return HttpResponse(message)

HTML 양식을 제출하면 양식의 데이터가 전송됩니다.action의 속성<form>. 당신의 자바스크립트에서 당신은 양식의 제출 이벤트에 가입하지만, 당신은 양식의 기본적인 동작을 비활성화하지 않습니다. 그것은 다음과 같습니다.action기여하다.jQuery에서는 호출을 통해 해당 동작을 수정할 수 있습니다.preventDefaultmethod on event 인수 및 반환false(전화하는 경우)preventDefault, 그 다음에 다시false꼭 필요한 것은 아니지만 확실히 하는 것을 확인하는 것이 좋습니다.):

$(...).submit(function(e) {
    e.preventDefault();
    ...
    return false;
});

편집

오류에 대해서는 당신의 오류는 큰 도움이 되지 않지만 CSRF의 유효성을 확인하지 못하는 것 같습니다.그것에 대한 자세한 설명은 여기에 있습니다.그러나 빠른 수정은 jQuery에 이 파일을 추가하고 보기에 데코레이터를 추가하는 것입니다.

언급URL : https://stackoverflow.com/questions/13465711/how-do-i-post-with-jquery-ajax-in-django

반응형