Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Proxy_pass
- queryset
- 선택 정렬
- request.path
- HTTP
- 트리란
- django 시작하기
- Django Ajax
- Trre heap
- request.GET
- nginx
- queryset filter
- 복수 외래키
- Djnago CSRF
- render html
- 클린코드-함수
- check ajax
- django
- CleanCode
- 알고리즘
- 포맷팅
- 자료구조
- 정렬
- is_ajax() not working
- 효울적
- reCAPTCHA V2
- 클린 코드
- 클린코드
- 글자 수
- 버블 정렬
Archives
- Today
- Total
Yang 코딩 공부
Django [tip] ajax통신하여 html 파일을 랜더링하기. 본문
Djnago를 통해 작업을 하다보니 templete를 랜더링하게 될 때 hmtl 코드를 동적으로 추가하거나 삭제하는 부분들이 있었다. 그럴 때 마다 ajax 통신 후 받은 Json 값을 이용해 동적으로 추가하였는데 이때 Django는 모델에서 외래키로 이뤄진 객체는 ajax로 전달하지 못함을 알게되었고 Django에서 전달할때 일일이 객체안의 내용을 담아서 따로 보내야했었다.
이를 해결하기 위해 html을 랜더링하여 ajax에 보낼 수는 없을까? 하고 찾던 도중 알게된 방법이다.
function request_get_ajax(address){
$.ajax({
url: 'Your url',
type: 'GET',
data: {
'your data'
},
success:setPostAjax,
dataType: 'html',
error: function (e) {
}
})
}
function setPostAjax(data, textStatus, jqXHR) {
$('.temp').append(data);
}
위에서 중요한 부분은 dataType 인데 'html'로 해야 해당 통신한 후 받은 데이터를 인식하고 이를 문자열로 바꿔준다.
그 후 통신이 성공적일시 setPostAjax를 실행. -> 원하는 장소에 data를 삽입해준다.
Django 에서는 원하는 html 파일을 context와 함께 render 함수를 통해 보내면 된다. 아래와 같다.
from django.http import HttpResponseBadRequest
from django.shortcuts import render
def temp_function(request):
if request.method == "GET" and is_ajax:
temo_obj = models.Temp.objects.first()
return render(request, "temp_for_ajax.html")
else:
"""
비정상적인 접근
"""
return HttpResponseBadRequest("비정상적인 접근입니다",format(request.method),status=405)
'Django > tip' 카테고리의 다른 글
[Django] Mixin (0) | 2022.09.06 |
---|---|
Django 한번에 대량 업데이트 (0) | 2022.07.04 |
Django [tip] Django에서 ajax 인지 확인하기. (0) | 2022.06.17 |
Django [Tip] - request.GET[key] / request.GET.get(key) 차이점 (0) | 2022.03.31 |
Django [Tip] - Django Template Tag 이용 글자 수 출력 길이 지정 (0) | 2022.03.29 |