Django 2.1.7 조회 데 이 터 는 json 형식의 실현 을 되 돌려 줍 니 다.
일상적인 작업 에서 전단 에서 보 내 온 요청 에 대해 백 엔 드 django 는 대부분 json 형식 으로 되 돌아 가 고 템 플 릿 으로 보 기 를 되 돌려 주 는 방식 도 있 습 니 다.
템 플 릿 에서 보 기 를 되 돌려 주 는 방식 은 확실히 편리 하지만,동정 분리,aax 요청 과 관련 이 있다 면,django 는 json 형식의 데 이 터 를 되 돌려 줄 수 밖 에 없습니다.
그러면 여기 서 django 가 데이터베이스 모델 류 에서 조회 한 데 이 터 를 json 형식 으로 전단 에 어떻게 놓 는 지 문 제 를 가 져 왔 습 니 다.
그리고 전단 에서 읽 고 되 돌아 오 는 데 이 터 를 가 져 오 면?
환경 설명
이번 예제 에 서 는 먼저 간단 한 페이지 를 써 서 ajax 요청 을 보 낸 다음 백 엔 드 에서 여러 줄 의 데 이 터 를 어떻게 되 돌려 주 는 지,검색 대상 에 게 돌아 가면 예제 설명 을 합 니 다.
전단 코드
먼저 간단 한 전단 페이지
test_ajax.html
를 작성 합 니 다.다음 과 같 습 니 다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/static/js/jquery-3.0.0.min.js"></script>
<script>
$(function () {
$('#search_server').click(function () {
//
var server_name = $('#server_name').val();
console.log('server_name = ' + server_name);
// ajax post
$.ajax({
url: "/assetinfo/test_ajax",
type: 'POST',
data: {
"tag": "search_project",
"server_name": server_name,
},
dataType: "json",
async: false,
//
success: function (data) {
console.log(data);
},
//
error: function () {
alert(" ");
}
})
})
})
</script>
</head>
<body>
<input type="text" id="server_name">
<button id="search_server"> </button>
</body>
</html>
이 루어 진 기능 은 간단 합 니 다.입력 상자 의 내용 을 가 져 온 다음 제출 단 추 를 누 르 면 ajax 의 post 요청 을 보 내 면 됩 니 다.백 스테이지 에서 서버 정 보 를 직접 조회 한 후 여러 개의 json 데 이 터 를 되 돌려 줍 니 다.
구현 클래스 보기 코드 는 다음 과 같 습 니 다:
from django.core import serializers
from django.http import HttpResponse
from assetinfo.models import ServerInfo
# ex: /assetinfo/test_ajax
class TestAjax(View):
def get(self,request):
""" html """
return render(request,'assetinfo/test_ajax.html')
def post(self,request):
""" ajax post """
servers = ServerInfo.objects.all() #
json_data = serializers.serialize('json', servers) # json
return HttpResponse(json_data, content_type="application/json") # json
배경 코드 에서 저 는 post 가 요청 한 인 자 를 가 져 오고 매개 변 수 를 조회 하 는 동작 을 하지 않 았 습 니 다.이렇게 하면 json 형식 데 이 터 를 되 돌려 주 는 방법 만 보 여 줍 니 다.그 중에서 post 요청 파 라 메 터 를 가 져 오 는 방식 은 간단 합 니 다.여전히
request.POST.get(' ')
이면 됩 니 다.브 라 우 저 테스트 기능 은 다음 과 같 습 니 다.
브 라 우 저의 콘 솔 에서 백 엔 드 가 되 돌아 오 는 결과 데 이 터 를 볼 수 있 습 니 다.
그러나 이렇게 해서 전단 과 작업 제약 이 없 는 것 은 좋 지 않 습 니 다.그러면 전단 과 상호작용 하 는 형식 제약 을 추가 하 겠 습 니 다.
전후 단 제약 반환 데이터 형식
{"resCode": '0', "message": 'success',"data": []}
이 구속 형식 에 따 르 면 조회 결 과 는data
배열 에 넣 어야 합 니 다.다음은 백 엔 드 보기 코드 를 바 꾸 겠 습 니 다.백 엔 드 는 제약 형식 에 따라 json 데 이 터 를 되 돌려 줍 니 다.
from django.core import serializers
from django.http.response import JsonResponse
from assetinfo.models import ServerInfo
# ex: /assetinfo/test_ajax
class TestAjax(View):
def get(self,request):
""" html """
return render(request,'assetinfo/test_ajax.html')
def post(self,request):
""" ajax post """
#
result = {"resCode": '0', "message": 'success',"data": []}
#
servers = ServerInfo.objects.all()
# Python
result["data"] = serializers.serialize('python', servers)
return JsonResponse(result)
브 라 우 저 테스트 는 다음 과 같 습 니 다:이렇게 전단 으로 돌아 가면 모든 데이터 대상 은 fields,model,pk 세 개의 대상 을 포함 하고 각각 필드,모델,메 인 키 를 대표 합 니 다.모든 필드 만 포함 하 는 사전 대상 을 원 합 니 다.
백 엔 드 에서 모든 model 대상 을 dict 사전 대상 으로 변경 합 니 다.
from django.core import serializers
from django.http.response import JsonResponse
from django.forms.models import model_to_dict
# ex: /assetinfo/test_ajax
class TestAjax(View):
def get(self,request):
""" html """
return render(request,'assetinfo/test_ajax.html')
def post(self,request):
""" ajax post """
#
result = {"resCode": '0', "message": 'success',"data": []}
#
servers = ServerInfo.objects.all()
# model dict , data list
for server in servers:
server = model_to_dict(server) # model dict
server['server_used_type_id'] = serializers.serialize('python', server['server_used_type_id']) # ,
result["data"].append(server)
return JsonResponse(result)
브 라 우 저 테스트 는 다음 과 같 습 니 다:이렇게 전단 에 전달 되 는 것 이 사전 의 대상 임 을 알 수 있다.
마지막 으로 전단 js 가 json 형식 데 이 터 를 옮 겨 다 니 는 예 시 를 드 립 니 다.
전단 에서 되 돌아 오 는 json 형식 데이터 예제
<script>
$(function () {
$('#search_server').click(function () {
....
// ajax post
$.ajax({
url: "/assetinfo/test_ajax",
type: 'POST',
data: {
"tag": "search_project",
"server_name": server_name,
},
dataType: "json",
async: false,
//
success: function (res) {
{#console.log(res.data);#}
// data
for(var i=0;i<res.data.length;i++){
console.log(res.data[i]);
console.log(res.data[i]['server_hostname']);
console.log(res.data[i]['server_internet_ip']);
console.log(res.data[i]['server_intranet_ip']);
}
},
//
error: function () {
alert(" ");
}
})
})
})
</script>
브 라 우 저 는 다음 과 같 습 니 다:Django 2.1.7 조회 데이터 가 json 형식 으로 돌아 가 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Django 가 json 형식 으로 돌아 가 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.