ajax로 넘긴 json 형식을 django에서 저장하기
※ 본 프로젝트는 django-rest-framework 활용이 아닌 django를 위한 코드로 작성되었습니다.
ON-LINE 프로젝트에서 map.html에서 [추가]버튼을 누르면 add() 함수가 실행되었는데,
이 add 함수에 json 값(아직은 고정값임)을 담아 ajax로 day.html 페이지로 넘긴후 그 JSON 파일을 저장하려는 계획을 세웠다.
# map.html 속 jquery
function add() {
//json 으로 보내는 코드
//json 장소 하드코딩
var parameters = {
"place_name":"스타벅스 제주시청점",
"place_address":"제주특별자치도 제주시 특별자치도, 중앙로 215",
"latitude":"126.53133413314706", // 위도
"longtitude":"33.49963223009168", //경도
}
$.ajax({
url:"{% url 'route:result'%}",
type:"POST",
headers: {
//post로 보낼때 장고에서 csrf오류가 나서 헤더에 토큰을 함께 보냄.
'X-CSRFTOKEN' : '{{csrf_token}}'
},
data: JSON.stringify(parameters),
success:function(data){
let url = '{% url 'route:result'%}';
// ajax 특성상 값은 전달하되, 페이지 이동은 없음. 그래서 따로 설정함.
location.replace(url);
console.log(parameters);
}
});
def result(request):
if request.method == "POST":
# map.html에서 넘겨받은 json 값
json_object = json.loads(request.body)
# {'place_name': '스타벅스 제주시청점', 'place_address': '제주특별자치도 제주시 특별자치도, 중앙로 215', 'latitude': '126.53133413314706', 'longtitude': '33.49963223009168'}
print(json_object)
# django에서 form을 만들어 저장하는 형식이 아닌 직접 넣고 싶었기 때문에
# model 객체를 직접 호출해 각 칼럼에 값을 대입했다.
place_save = PlaceModel(
place_name=json_object["place_name"],
place_address=json_object["place_address"],
latitude=json_object["latitude"],
longtitude=json_object["longtitude"],
username=request.user
)
place_save.save()
return render(request, 'route/day.html')
※ django에서 ajax를 사용하기 위해 참고할 자료는 다음과 같다.
https://initstory.tistory.com/20
Django 에서 JQuery의 Ajax 통신하기!!!!
이번 시간에는 Django에서 비동기식 통신을 해보려고 한다 흔히 Ajax라고 하더구나 Ajax는 보통 JQuery에서 쓰이는 $.ajax 를 많이 쓰더라 그래서 이번에는 JQuery의 Ajax를 이용한 비동기식 통신을 해보겠
initstory.tistory.com
※ django에서 form.py를 거치는 것이 아닌 model로 직접 저장을 위해 참고한 자료는 다음과 같다.
https://haeyong27.github.io/django/2019/11/12/django-orm-create-save/
Django ORM create, save · 풀스택 개발 공부로그
Django ORM create, save 12 Nov 2019 | Django Django ORM (create, save) Models and databases | Django documentation | Django A model is the single, definitive source of data about your data. It contains the essential fields and behaviors of the data you’r
haeyong27.github.io