Django 2.1.7 조회 데 이 터 는 json 형식의 실현 을 되 돌려 줍 니 다.

수요 문제
일상적인 작업 에서 전단 에서 보 내 온 요청 에 대해 백 엔 드 django 는 대부분 json 형식 으로 되 돌아 가 고 템 플 릿 으로 보 기 를 되 돌려 주 는 방식 도 있 습 니 다.
템 플 릿 에서 보 기 를 되 돌려 주 는 방식 은 확실히 편리 하지만,동정 분리,aax 요청 과 관련 이 있다 면,django 는 json 형식의 데 이 터 를 되 돌려 줄 수 밖 에 없습니다.
그러면 여기 서 django 가 데이터베이스 모델 류 에서 조회 한 데 이 터 를 json 형식 으로 전단 에 어떻게 놓 는 지 문 제 를 가 져 왔 습 니 다.
그리고 전단 에서 읽 고 되 돌아 오 는 데 이 터 를 가 져 오 면?
환경 설명
  • 전단 은 jquery 로 ajax 요청 을 보 냅 니 다
  • python 3.7.2
  • django 2.1.7
  • 예시 설명
    이번 예제 에 서 는 먼저 간단 한 페이지 를 써 서 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 형식 으로 돌아 가 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기