본문 바로가기

프로그래밍/Django

(10)
[Django] 네이버 영화 API 사용하기 1주차 Naver API 연동하기 Django에서 Naver API 활용하기 네이버 영화 API의 예제코드는 영화탭이 아니라 블로그 탭에 있다. # 네이버 검색 API예제는 블로그를 비롯 전문자료까지 호출방법이 동일하므로 blog검색만 대표로 예제를 올렸습니다. # 네이버 검색 Open API 예제 - 블로그 검색 import os import sys import urllib.request client_id = "YOUR_CLIENT_ID" client_secret = "YOUR_CLIENT_SECRET" encText = urllib.parse.quote("검색할 단어") url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json ..
[Django] 폼(Form)에서 commit=False의 의미 form Commit=False Django에서 모델 Form을 다루다보면 종종 commit=False라는 코드를 마주칠 때가 있다. 가끔씩 헷갈리는 부분이기 때문에 장고 공식문서를 통해 학습하고자 한다. save(commit=False) 왜 사용하나요? 한줄요약 : commit=False를 하게 되면 데이터베이스에 당장 저장하지 않는다. 언제쓰지? : DB에 데이터를 저장하기 전에 특정 행위를 하고 싶을 때 사용한다.. 실제 예제 모델 작성자 모델 idnickname 1사용자1 2사용자2 class Author(models.Model): nickname = models.CharField(max_length=20) 간단하게 회원가입할 때 적는 아이디(ID)를 nickname 필드로 지정했다. 게시글 모델..
[Django] Django allauth 유저 모델 커스텀하기 네이버로그인 소셜계정으로 회원가입한 유저 구분하기 제목을 커스텀 유저모델이라고 썼지만 사실 유저 인스턴스를 커스텀하는 것에 더 가깝다. 현재 만들고 있는 프로젝트에서 소셜계정으로 로그인하는 유저에게 특정 필드값을 부여하고 싶었다. 예를 들면 네이버로 로그인 하는 유저에게는 N이라는 값을, 페이스북으로 로그인하는 유저에게는 F 값을 주고 싶었다. 나중에 어떤 곳에서 유입이 더 많이 될지 살펴볼 수 있지 않을까? 처음에 혼란스러웠던 점은 어디서부터 시작해야 할지 모르겠다는 점이었다. 라이브러리 활용이 처음이었기 때문에 아예 백지 상태였다. 결론부터 말하자면 django-allauth에 어딘가를 오버라이딩해야 한다. django allauth custom usermodel이라고 검색하니 다시 공식문서로 회귀하..
[Django] Django-allauth를 통한 페이스북 회원가입 및 로그인 페이스북 회원가입 Django-allauth을 활용한 페이스북 회원가입(로그인) http://django-allauth.readthedocs.io/en/latest/installation.html 라이브러리 활용이 전무해서 처음에 좀 애먹었다. 우선 첫 환경세팅은 공식홈페이지를 보고 따라하는 것이 가정 정확하고 빠르다. 설치하기 pip install django-allauth settings.py 세 부분을 건들여줘야 한다. (INSTALLED_APPS, TEMPLATES, AUTHENTICATION_BACKENDS) INSTALLED_APPS에는 추가해야 할 앱들이 많기 때문에, +=를 활용해 아래칸에 따로 만들어줬다. INSTALLED_APPS += [ # The following apps are r..
[DJango] AbstractBaseUser vs AbstractUser 비교하기 AbstractUser vs AbstractBaseUser AbstractUser vs AbstractBaseUser AbstractBaseUser를 상속하게 되면 Class MyUser(AbstractBaseUser): pass 꼴랑 2개밖에 안던져준다(id는 자동생성 되는 필드니까). 이를 상속해서 유저 모델을 구축한다면 세밀한 컨트롤이 가능하지만 세그만큼 손도 많이 간다. 만약 페이스북 이메일 인증(permission)을 통한 가입을 하고 싶다면 AbstractBaseUser를 사용해야 한다. 상속받는 클래스틀 타고 들어가면 아래처럼 구현되어있다. class AbstractBaseUser(models.Model) password = last_login = def get_username(self): ..
[Django] Django + Celery + Redis 이용하기 Redis_Celery 들어가기 전에 동기 vs 비동기 (이미치 출처 : http://ojava.tistory.com/17) 어떤 서비스에 회원가입을 하면 메일이 날라오는 경우가 있다. 동기 : 메일이 날라올 때까지 아무것도 하지 못한다. 비동기 : 메일이 날라오지 않더라도 다른 작업을 할 수 있다. 비동기 방식이 짱짱맨 아니냐 하겠지만 어떤 방식이건 간에 장단점이 존재한다. 아무튼, 회원가입 축하 이메일 발송은 사실 고객(client)에게 중요한 부분이 아니다. 일단 가입을 하고 서비스를 이용하기를 원할 것이다. 이러한 이메일 발송은 비동기 처리로 보낼 수 있다. 이를 백그라운드에 보낸다고 표현한다. Djnago + Celery + Redis Celery는 일꾼이다. 해야 할 일들을 처리한다. Reid..
[Django] Django Rest Framework(DRF) 알아보기 1부 REST_API Django REST Framework (DRF) REST REST에 관해서 많은 블로그 글들이 자세하게 설명하고 있기에 여기서는 간단하게 설명하고자 한다. REST는 WEB 관련 기술이다. 데이터를 주고받는 일종의 규약이다. 단순하다. 사용하기 편하다. Open API와 궁합이 좋다. HTTP 기본 메서드 4가지(POST, GET, PUT, DELETE)를 통해 일관적인 컨벤션(관례)을 유지한다면 RESTful 하다고 한다. 좀 더 자세히 알아보고 싶다면 이 블로그를 추천한다. http://blog.remotty.com/blog/2014/01/28/lets-study-rest/ 직렬화 하기 처음에 이름부터 너무 어렵게 느껴져서, 직렬화라는 용어 자체가 두려움의 대상이었다. 그래서, 초심..
[Django] settings 환경 분리하기 settings 분리하기 Django settings 환경 분리하기 장고를 처음 배우면서 가장 당황했던 일은 settings.py이란 파일은 온데간데 없고, deploy.py, debug.py로 환경세팅을 나누는 것이었다. 원래는... ./manage.py runserver runserver를 할 때는 명령어가 간단했는데, 이제는 파일을 나누게 되니까 여러모로 당황스러웠다. ./manage.py runserver --settings=config.settings.debug # 개발(디버그)용 ./manage.py runserver --settings=config.settings.deploy # 배포(서비스)용 환경 세팅이 deploy용과 debug용으로 나뉘면 런서버를 실행하는 법도 바꿔줘야 한다. 그냥 ..