backend/django 80

django rest framework 공식문서 - serializer fields 정리

Serializer fieldsserializer 필드는 primitive value와 internal datatypes간의 변환을 핸들링.또한 input value에 대한 validating도 해줌.Serializer field들은 fields.py에 선언되어 있는데, 편의를 위해서from rest_framework import serializers 로 호출 후,serializers.로 사용하면 됨1. Core arguments각각의 serializer field class는 적어도 3개의 args를 받음. 몇몇 Field는 추가적인 (field-specific) args가 필요다음에 나오는 것들은 항상 acceptedread_onlyAPI output에는 포함되고 input에는 포함되지 않음. 만약 ..

backend/django 2017.12.09

django 2.0 릴리즈: simple url 정리(url converter)

드디어 django 2.0이 정식 release 됐다. 이제 pip install django로 장고를 설치하면 2.0 버전이 설치된다. 1.11이 나온게 엊그제같은데.. 정말 빠르다.2.0 relaease note를 쭉 읽어 봤는데 다른 변화들도 많지만 무엇보다도 url에서 엄청난 변화가 생겼다.주목할만한 변화 몇 가지만 남겨놓아본다.Simplified URL routing syntax기존에url(r'^articles/(?P[0-9]{4})/$', views.year_archive), 로 사용하던 django.urls.path()라는 새로운 기능을 사용해 간단하게 사용 가능하다.path('articles/', views.year_archive), 자주 사용해도 정규표현식과 $, ^ 등으로 여러 번 헷갈..

backend/django 2017.12.04

Change django migration file name after migrate

django에서 migration 파일을 관리하다 보면, 서로 다른 곳에서 makemigration 명령어를 진행해 서로 같은 내용의 migration 파일이 이름만 다른 경우가 발생한다. (물론 한 곳에서만 makemigration 하는 것이 가장 좋은 방법인것 같다.)이런 경우에 git을 통해 파일 명을 맞춰버리면 migrate 을 했을 경우에 이름이 다른 파일을 전혀 다른 migration 파일로 인식하기 때문에 동일한 내용을 두 번 migrate하여 대개 already exist 에러가 발생한다.다양한 방법으로 해결이 가능하지만, 가장 편리한 방법은 역시 --fake migrate 방법이다.1. 파일명 변경이름이 다른 파일의 파일명 (대개는 시간이 다른 경우가 많다)을 변경해준다. (안에 내용에도..

backend/django 2017.11.11

django project에 cloudfront(s3) 연결하기

0. aws s3 생성 및 cloudfront 연동이 부분은 permission, property 등 생각보다 설정해야 할 것이 많으므로 다른 포스팅에서 따로 다룰 예정이다.1. 초기 라이브러리 설치1. Install django-storage공식문서를 참고해서 django-storage 를 설치설치 이후에는 settings.py에 추가해준다.INSTALLED_APPS = ( ... 'storages', ... ) 2. Install boto3boto 공식 문서를 참고하여 설치 (pip install boto3)2. MediaStorage module 추가하기S3Boto3Storage를 상속받는 MediaStorage를 만들어야한다. 위치는 settings.py가 있는 디렉토리나, common app(u..

backend/django 2017.11.09

django get site-url in template

project를 진행시 한 코드를 여러 url에 물리고 싶을 때가 있다. 그럴 때 javascript 내에서 절대경로로 하드코딩하게 되면 추후에 모든 url을 다 수정해야 하는 일이 발생하기 때문에 모든 url domain을 물리는 방법을 찾아보았다.request.META.HTTP_HOST 사용하기request.META가 가지고 있는 여러 정보들 중 HTTP_HOST를 사용하면 현재 request가 접속중인 HOST, 즉 절대경로를 던져준다. 이걸 써도 무방하지만 request를 받아야만 해당 site url을 반환하기 때문에 다른 방법을 사용하였따.Template context_processor 사용하기만약 settings.py를 local, production, aws 등 나누어 관리한다면 다음 방법..

backend/django 2017.11.07

django allauth로 Linkedin 로그인 구현하기

[이전 포스트]의 allauth 사용법을 읽고 allauth 설치하고, INSTALLED_APP에 linked-in을 추가를 완료한 후 이 포스트를 따라해야함1. 앱 만들기linkedin developer로 들어가서 새로운 앱을 만든다.회사명, 이름, 사용할 URL 등을 적은 후 만들어진 앱의 클라이언트 ID, 비밀 키를 django admin의 social application에 추가해준다.2. OAuth 2.0 에 인증된 리다이렉트 URL 추가하기redirect url로 http://localhost:8000/accounts/linkedin_oauth2/login/callback/를 추가3. settingsSOCIALACCOUNT_PROVIDERS = { 'linkedin': { 'SCOPE': [ ..

backend/django 2017.11.06

django-hitcounts: 페이지 view를 쉽게 이용하자

설치법여느때와 같이 pip를 이용해 설치해주자.pip install django-hitcount Installed app에 넣는것을 까먹으면 안된다# settings.py INSTALLED_APPS = ( ... 'hitcount' ) DetailView, Model에 추가하기CBV (DetailView)를 사용해서 detail page를 만들어 놓았다면, 아주 쉽게 hit 수를 카운팅할 수 있다. (만약 fbv로 구현이 되어있다면 이번 기회에 CBV를 사용해보자. 좋다.)# models.py from django.db import models from hitcount.models import HitCountMixin # 다음과 같이 HitCountMixin을 상속받아주자 class MyModel(mod..

backend/django 2017.11.04

django에서 pytest 활용하기

django에 TDD를 적용하기에 앞서 pycon 2017에서 세션을 들은 pytest를 사용해보기로 하였다. pytest를 찾아보던 중, Why I use py.test and you probably should too 라는 좋은 글을 번역해 놓은 것이 있어서 읽으면 큰 도움이 되겠다.Using django-pytestInstall pytest$ pip install pytest-djangoSetting테스트를 실행할 루트 디렉토리 (manage.py가 위치한 디렉토리)에 pytest.ini을 생성한다. 그 후 테스트에 사용할 설정 파일을 지정해준다. 실행시 –settings로 따로 지정해도 괜찮다. 이 외 다양한 설정은 pytest 문서를 확인.[pytest] DJANGO_SETTINGS_MODULE..

backend/django 2017.10.10

장고 스터디 모임 후기

처음 만나 어색했던 장고 스터디 모임도 벌써 두달 가까이 되어간다. 동욱님의 도움으로 어정쩡하게 참가하게 되었지만 총무를 맡고 열심히 하면서 정말 많은걸 배웠다. 돌아보면 정말 이무것도 모르는 나였는데(물론 지금도 아무것도 모른다) 뭘 어떻게 공부해야할지 정말 많은걸 알려준 스터디다. 주최하신 동훈님부터 많은 실력자분들이 계시고, 열정적으로 참가하셔서 너무 감사드린다. 이제부터 장고 공식 문서를 함께 읽는데, 내가 정리하는 부분이 아니더라도 읽고 공부해서 일취월장해야지

backend/django 2017.04.17