ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • requests 모듈의 사용과 DB에 데이터 저장하기
    💻 프로그래밍/Django 2017. 12. 25. 22:20

    안녕하세요! 코딩하는 JAY입니다!!! 정말 오랜만의 포스팅이네요 ㅠㅠ 


    그동안 나름 토이프로젝트다 뭐다 해서 이것저것 하느라 블로그 포스팅에 조금 소홀했습니다..


    무튼, 이번 포스팅에서는 requests모듈을 이용해 서버에 데이터를 전송하고 DB에 저장하는 방법을 알아보도록 하겠습니다.


    1. requests 모듈이란?

    requests 모듈은 간단한 HTTP 요청처리를 위해 사용되는 모듈이다. 파이썬 기본 내장 모듈이아닌 별개로 만들어진 오픈소스이기 때문에 따로 설치를 해주어야 한다.

    - POST 요청

    requests 모듈의 post함수는 IP와 Data를 인자값으로 받으며, 보시다시피 사용방법은 정말 간단합니다.

    Data는 Dictionary 형태로 보냅니다.


    2. Django에서 DB 마이그레이션 하기

    1번에서 POST로 넘겨준 데이터를 받고 저장하기 위해서는 Django에서 DB에 POST로 받는 데이터의 내용에 맡게 테이블을 생성해줘야 합니다.

    models.py에서 우리가 사용할 테이블의 내용을 추가합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # django에서 모델은 정보를 담고있는 개념
    from django.db import models
     
    class MetrisData(models.Model) :
        name = models.CharField(max_length = 10)
        introduction = models.TextField()
        gamescore = models.IntegerField(default=0)
        gametime = models.IntegerField(default = 0)
     
        def __str__(self) :
            return self.name
     


    저는 제가 지금 토이프로젝트로 만들고 있는 게임에서 사용할 데이터로 테이블의 필드를 구성했습니다.

    DB테이블을 만들었으면 다음은 마이그레이션을 하여 Django에 적용해야 합니다. 


    - python manage.py makemigrations "앱이름" : 마이그레이션 파일 생성

    - python manage.py migrate "앱이름" : 마이그레이션 적용


    다음은 views.py에서 전달받는 데이터를 처리해주는 함수를 만들어야 합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.views.decorators.csrf import csrf_exempt
    from .models import Candidate, MetrisData
    import datetime
     
    @csrf_exempt
    def index(request) :
        metrisData = MetrisData.objects.all() # 테이블 데이타를 전부 가져오기 위한 메소드
        context = {'metrisData' : metrisData}
        try :
            metrisdatas = MetrisData(name = request.POST['name'], introduction = request.POST['introduction'], 
                                 gamescore = request.POST['gamescore'], gametime = request.POST['gametime'])
            metrisdatas.save()
        except :
            metrisdatas  = None
        return render(request, 'elections/index.html', context) # render는 view에서 템플릿에 전달할 데이타를 Dictionary로 전달한다
     


    try문 안에 있는 내용이 전달받은 데이터를 DB에 저장해주는 코드입니다. MetrisData 모델에 POST로 받은 데이터를 각 필드에 맡게 넣어준 후, save() 하면 테이블에 데이터가 저장됩니다.


    3. 서버실행 후, DB체크

    1, 2번의 과정을 다 마치셨으면 python manage.py runserver 명령어를 실행하여 서버를 실행시켜줍니다.(저는 테스트하기 위해 로컬서버(127.0.0.1)를 이용했습니다.)

    서버에서 POST 데이터를 받았다고 표시되는 화면입니다.


    DB확인 결과  POST로 전달받은 데이터가 제대로 입력되었음을 확인할 수 있습니다.


    참 간단하쥬?! ㅋㅋㅋ 오늘은 requests모듈을 사용해 데이터를 보내고, 받은 데이터를 DB에 저장하는 방법에 대해서 알아보았는데요. 가장 기본적인 내용이라 특별히 어려운 점은 없으셨을거라 생각됩니다:D

    그럼 오늘도 즐프. 재밌는 코드 생산하세요~!!! 

    카카오 이모티콘'에 대한 이미지 검색결과

    (잘못된 내용이나, 수정해야할 내용이 있으면 언제든지 댓글로 지적 부탁드립니다!)


    댓글

운동하는 개발자 JAY-JI