AJAX는 비동기 작업을 수행하는 가장 좋은 방법입니다. 비동기식 호출은 모든 웹 사이트 구축에서 일반적으로 사용되는 것입니다. Django에서 AJAX를 구현하는 방법을 배우는 간단한 예를 들어 보겠습니다. 자바 스크립트를 적게 작성하려면 jQuery를 사용해야합니다.
이것은 가장 간단한 예인 Contact 예입니다. AJAX의 기본 사항과 Django에서의 구현을 설명하는 데 사용하고 있습니다. 이 예에서는 POST 요청을합니다. 이 게시물의 예 중 하나를 따르고 있습니다 : https://djangopy.org/learn/step-up-guide-to-implement-ajax-in-django
models.py
먼저 기본 세부 정보가 포함 된 Contact 모델을 작성하겠습니다.
from django.db import models
class Contact(models.Model):
name = models.CharField(max_length = 100)
email = models.EmailField()
message = models.TextField()
timestamp = models.DateTimeField(auto_now_add = True)
def __str__(self):
return self.name
forms.py
위 모델의 양식을 작성하십시오.
from django import forms
from .models import Contact
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
exclude = ["timestamp", ]
views.py
뷰는 기본 함수 기반 작성 뷰와 비슷해 보이지만 렌더로 리턴하는 대신 JsonResponse 응답을 사용합니다.
from django.http import JsonResponse
from .forms import ContactForm
def postContact(request):
if request.method == "POST" and request.is_ajax():
form = ContactForm(request.POST)
form.save()
return JsonResponse({"success":True}, status=200)
return JsonResponse({"success":False}, status=400)
urls.py
위 뷰의 경로를 만들어 봅시다.
from django.contrib import admin
from django.urls import path
from app_1 import views as app1
urlpatterns = [
path('ajax/contact', app1.postContact, name ='contact_submit'),
]
주형
프론트 엔드 섹션으로 이동하여 csrf_token 및 제출 단추와 함께 양식 태그를 둘러싸는 위에 작성된 양식을 렌더링하십시오. jquery 라이브러리가 포함되어 있습니다.
<form id = "contactForm" method= "POST">{% csrf_token %}
{{ contactForm.as_p }}
<input type="submit" name="contact-submit" class="btn btn-primary" />
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
자바 스크립트
이제 javascript 부분에 대해 이야기하겠습니다. 양식 제출에서 POST 유형의 ajax 요청을 작성하고 양식 데이터를 가져 와서 서버 측으로 보냅니다.
$("#contactForm").submit(function(e){
// prevent from normal form behaviour
e.preventDefault();
// serialize the form data
var serializedData = $(this).serialize();
$.ajax({
type : 'POST',
url : "{% url 'contact_submit' %}",
data : serializedData,
success : function(response){
//reset the form after successful submit
$("#contactForm")[0].reset();
},
error : function(response){
console.log(response)
}
});
});
이것은 django와 함께 AJAX를 시작하는 기본 예일뿐입니다. 몇 가지 예를 더보고 싶다면이 기사를 참조하십시오. https://djangopy.org/learn/step-up-guide-to- 장고를 구현하다