본문 바로가기

분류 전체보기

(76)
DRF(Django REST framework)로 API 서비스 만들기-2 기본 설정을 했으면 이제 유저 모델을 만들어야 한다 1. User 모델 커스컴 보통 서비스를 개발하게 되면 서비스마다 조금씩 다른 유저 모델을 생성한다. 장고에서 유저 모델에 컬럼을 추가하거나 수정하기 위해서는 유저 모델을 만들어서 커스텀 해줘야 하는 번거로움이 있다. a) 먼저 유저 모델 생성을 위해 앱을 만든다 python manage.py startapp account b) config/settgins.py에 앱 추가 ... INSTALLED_APPS = [ ... 'account', ] ... c) 커스텀할 유저 모델 생성 account/models.py from django.db import models from django.contrib.auth.models import (BaseUserMan..
DRF(Django REST framework)로 API 서비스 만들기-1 지금부터 DRF로 실제 서비스를 하기 위한 API 서버를 만들 것이다. 파이썬으로 웹 서비스를 개발하는 대표적인 방법은 Django를 이용하여 일반적인 웹 서비스를 만드는 방법과 DRF를 이용하여 API 서버를 만드는 방법이 있다. DRF는 Django rest framework의 약자로, 파이썬을 기반으로 하는 웹 개발 라이브러리이다. 쉽게 이야기해서 파이썬 기반으로 API 서비스를 개발할때 사용한다. 1. 프로젝트 구성하기 a) 먼저 프로젝트 폴더를 생성 - 윈도우 터미널이 무엇인가? https://rb.gy/p1r88q - 맥 터미널이란 무엇인가? https://rb.gy/6jcltu mkdir my-api-project b) .gitignore 생성 - 깃허브가 무엇인가? https://yanac..
요청 도메인, 아이피, 정보 얻기 서버로 들어오는 요청의 도메인이나 아이피, 정보등이 필요할 때가 있다. API 서버를 만드는데 요청 도메인으로 인증을 할때라든지... 1. request 객체 사용하기 유저로부터 서버로 요청이 들어오면 request 객체를 받을 수 있다. 해당 객체에는 여러가지 요청에 대한 정보가 들어 있다. 아래의 메서드를 이용하면 여러 값을 얻을 수 있다. reqeust.path /main request.get_host() naver.com request.get_full_path() /main?order=fast reqeust.secure() 요청이 https 인가 아니냐로 True False 이 외에도 request.META를 입력하면 많은 정보를 얻을 수 있다. 아래 서비스를 이용하면 결과값을 쉽게 볼 수 있다...
키 파일 분리하기 AWS를 쓰다가 천만원이 나왔다는 이야기를 들어본 적이 있는가? 요즘 대부분의 서비스들은 유료 서비스를 API 키 인증으로 제공하고 있다. 근데 이런 유료 서비스를 사용하는데 들어가는 키를 분실한다면? 키를 훔처간 사람이 내 키를 이용해서 내 돈을 마구마구 쓸 것이다. 그렇기 때문에 보통 프로젝트를 만들면 키파일을 따로 분리하고 Github에 올라가지 않도록 한다. 1. 키파일 생성 먼저 적당한 위치에 파일을 생성한다. project/config/key.py 2. 내용 생성하기 여기서는 디비 접속 부분을 키 파일로 만들어 보겠다 key.py APP_DB_DEV = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "dev_db", "USER": ..
로그 남기기 우리가 일반적으로 로컬에서 개발을 하면 오류를 콘솔에서 확인할 수 있지만, 테스트 서버나 프로덕션 서버에서 wsgi를 사용하면 로그를 콘솔처럼 확인할 수가 없다. 그렇기 때문에 로그파일을 남겨서 확인하는 방법을 사용해야 한다. 1. settings.py에 로그 설정 부분 추가 가장 먼저 셋팅 파일을 열어서 아래 내용을 추가한다. . . . LOGGING = { "version": 1, "disable_existing_loggers": False, "filters": { "require_debug_false": { "()": "django.utils.log.RequireDebugFalse", }, "require_debug_true": { "()": "django.utils.log.RequireDebugT..
설정 파일 분리하기 장고 프로젝트를 상용화 하기 위해서는 설정파일 분리가 필수적이다. 설정파일을 분리해야 개발 버전과 프로덕션 버전의 설정을 나눌 수 있다. 이 글은 장고 프로젝트를 2가지 버전으로 나눠서 운영한다고 가정 - dev : 개발용 테스트 서버를 위한 설정 - prod : 실재 상용 서비스 프로덕션 버전을 위한 설정 1. settings 폴더 만들기 가장 먼저 기존 settings.py 가 있는 위치에 settings 라는 폴더를 생성한다 project/config/settings.py 가 있다면 project/config/settings/ 2. 설정 파일 생성하기 총 3개의 파일을 생성한다. project/config/settings/base.py project/config/settings/dev.py proj..
git pull 후 특정 작업하기 django 서비스를 운영할 경우 서버에서 소스를 받은 후 수동으로 해주어야 하는 일들이 있다. migrate나 특정 파일의 복사 같은. 그럴경우 깃 훅을 사용하면 쉽게 사용이 가능하다. 해당 예제는 서버에서 배포를 위해 깃허브의 소스를 Pull 할 경우 특정 파일을 복사하는 방법에 대해서 설명한다. 1. 프로젝트 폴더의 .git 폴더로 이동 프로젝트 폴더로 이동하면 .git 이라는 폴더가 존재한다. 훅을 사용하기 위해 해당 경로로 이동 ce projcet/.git/hook 2. pull을 받으면 자동으로 실행 될 post-merge 훅 파일을 생성 vi project/.git/hook/post-merge #!/bin/sh rm -rf /home/ubuntu/app/modules cp -r /home/u..
서버 배포 하기 이 글은 AWS EC2 ubunto 20.x 버전에 django 프로젝트를 배포하는 글이다. os의 종류나 버전에 따라 경로가 다를 수 있으니 자신의 경로에 맞게 사용하면 된다. EC2 우분투는 /home/ubuntu/ 를 기준으로 한다. 유저는 ubuntu 1. 배포 준비 A) 프로젝트 폴더로 이동해서 아래 명령을 실행 pip3 freeze >> requirements.txt B) Setting.py 파일 수정 ALLOW_HOST에 서버 주소나 도메인을 추가한다. ALLOWED_HOSTS = [ "192.168.0.1", "localhost", "naver.com", ] 그리고 static 파일이 빌드될 위치를 설정한다. static 파일은 나중에 서버에 올리고 생성하여 nginx에 연결해야 하니 위치..