본문 바로가기

Django Admin : list_filter, SimpleListFilter Django Admin 페이지에서 하나의 모델을 선택하면 아래와 같이 필터는 없고 데이터만 쭉 나열된 것을 볼 수 있죠. 여기에 Filter 2개를 추가해보면 좋을 것 같네요. 하나의 Filter는 Status를 True / False 를 선택적으로 볼 수 있도록 하는 것을 하고요. 또 다른 하나는 item_code를 특정 값 이하만 볼 수 있도록 하는 Filter를 달아보겠습니다. 첫 번째 것은 정말 쉬운 것 같아요. admin.py에 아래와 같이 추가하면 끝입니다. BooleanFieldListFilter를 하나 추가한 것이 끝입니다. 결과는 아래와 같이 오른쪽에 Filter가 추가되어 나타납니다. 이 필터를 누르면 데이터가 필터링되어서 보여지죠. 많은 데이터가 있고 내가 원하는 결과를 빠르게 보기 .. 더보기
Django Admin : Class Name Change (Verbose name) Django Admin 페이지에 클래스 이름을 변경하기 위해서는 models.py에 접속해서 해당 클래스의 Meta에 verbose_name과 verbose_name_plural을 직접 설정하면 됩니다. 이에 대한 자세한 설명은 Django 문서에서 확인할 수 있습니다. verbose_name - https://docs.djangoproject.com/en/1.11/ref/models/options/#verbose-name verbose_name_plural - https://docs.djangoproject.com/en/1.11/ref/models/options/#verbose-name-plural 아래와 같이 적용이 가능합니다. 적용 결과는 아래와 같고요. 조금이라도 더 보기 좋게 바꾸는 것을 계속하.. 더보기
Allow Cross-Origin Resource Sharing in Django Django에서 CORS 허용하는 방법에 대해서 작성해둡니다. 일단 CORS 에러는 다른 서버에서 리소스 요청이 올 때 발생하는 것인데요.아래에 자세히 설명되어 있네요. https://developer.mozilla.org/ko/docs/Web/HTTP/Access_control_CORS CORS 에러는 Chrome Developer Tool에서 보면 아래와 같이 보이죠. 불필요한 것은 좀 가렸고요. Access-Control-Allow-Origin .... CORS 문제입니다. Django 환경에서 CORS 설정을 쉽게 설정하기 위해서는 django-cors-headers를 사용하면 편리합니다. https://github.com/ottoyiu/django-cors-headers 설치는 pip insta.. 더보기
Django Cache example 캐시 사용 여부에 따라 반응 속도가 정말 많이 차이나기 때문에 꼭 캐시를 사용하는 것이 좋습니다. 저는 캐시를 위해서 Redis를 사용하고 있습니다. Django + Redis 셋팅은 2017/02/19 - [ # 파이썬/- Django&REST] - Django와 ElastiCache 연결 포스팅에서 찾아보실 수 있어요. 활용 방법은 아래와 같습니다. 중요한 것은 cache.get(), cache.set() 을 적절히 사용하면 되는거죠.그리고 여러 번의 테스트를 통해서 원하는 결과가 잘 리턴되는지 속도가 빨라지는지 확인해보는거죠 !! 위 소스를 간단하게만 살펴보면 다음과 같습니다. 일단 cache.get('items')으로 캐시에 저장된 것이 있는지 확인합니다. None이 아니라면 캐시에서 받아온 데이.. 더보기
Django template setting 1.9 to 1.10 Django 1.9 버전에서 1.10으로 이동할 때 Template를 찾지 못하는 에러가 나는 경우가 있어요. 아래 그림 처럼 변경되었으니깐 참고하세요. 문서와 Stack Overflow를 찾아보니 django.core.context_processors.request가 django.template.context_processors에 포함되었기 때문이라고 하네요. 더보기
Django와 ElastiCache 연결 AWS가 워낙 쉽게 서비스하고 있어서 큰 문제는 없지만 간단하게라도 정리해둡니다. 저는 Django 캐시를 Redis로 사용하고요. AWS 환경에서 실제 서비스하기 위해서 ElastiCache를 사용하고 있습니다. 일단 ElastiCache 서버를 하나 생성해서 완료되면 아래 그림과 같이 보입니다. Status가 available이면 사용 준비가 완료되었다는 거죠 !! Endpoint를 복사해서 Django Settings.py 파일에 입력하면 끝입니다. 다만 EC2에서 접근할 수 있도록 Security Group - Inbound에 6379 포트를 하나 추가해줍니다. Source에는 EC2 IP를 적어도 되지만 ElastiCache 자체가 기본적으로는 AWS 환경안에서만 접근 가능하기 때문에 0.0.0.. 더보기
PostgreSQL Index print (using sql) PostgreSQL에서 테이블 인덱스를 출력하기 위한 SQL문은 아래와 같습니다. select * from pg_indexes where tablename = 'table_name'; 실제로 돌려보면 위 그림과 같이 나오고요. pgadmin3에서 직접 pg_indexes에 접근해서 볼 수도 있습니다.아래 그림 화살표를 따라가면 됩니다. Database - Catalogs - PostgreSQL (pg_catalog) - Views - pg_indexes 역시 SQL로 각 테이블마다 보는게 편하겠지만 !! 더보기
Django Rest Framework Performance Django Rest Framework Performance 관련해서 많은 도움을 받은 웹 문서를 하나 추천합니다. Web API performance: profiling Django REST framework https://www.dabapps.com/blog/api-performance-profiling-django-rest-framework/ 저도 최적화 할 때 위 내용을 많이 사용했어요. 기본적인 내용인데 이런 것들을 잘 기억해서 다음번 설계에도 반영해야겠어요. 1. Serializer를 통과시키지 말고 필요한 데이터만 values로 뽑아올 것 2. 캐시를 잘 사용하자 3. view를 슬림하게 유지하고 HttpResponse 사용하자 캐시는 꼭 해야 하는 것 같아요. :-) 위 내용을 적용하면서 .. 더보기
Mac에서 Redis Sock 찾지 못해서 시작 안될 때 제가 지금 사용하고 있는 개발 환경은 주로 맥(Mac)입니다. 캐시(cache)를 위해서 Redis를 사용하는 편인데요. 맥을 재부팅하면 Redis Socket을 찾지 못해서 runserver가 실행되지 않는 경우가 종종 발생했죠. 그래서 종종 재시작을 해서 (참 바보 같은) 문제를 해결했습니다. 아래 명령어로 한 번에 해결할 수 있었는데 .. brew services restart redis 아무튼 위와 같은 명령어로 redis를 재시작할 수 있고 sock도 잘 만들어내서 문제 해결 !! 참고로 redis upgrade는 아래 그림과 같이 brew upgrade redis 더보기
django admin site : search field Django Admin Site에서 field로 검색하기 위해서는 search_fileds 를 작성해주면 됩니다. 아래는 django documentation의 일부 입니다. https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields 기본적으로는 아래와 같이 적용하면 됩니다. admin.py에 작성하는 class에 search_fields에 column name을 작성하면 검색이 됩니다. admin site에서는 아래 그림 처럼 search input이 보여요. 간단하게 끝 :-) 더보기
Django + Rest Framework + JWT Django + Rest Framework + JWT 에 대해서 간단하게 작동을 실험해봤습니다. 여기는 간단하게 사진으로 정리해두려고 합니다. settings.py 에는 아래와 같이 추가합니다. 'rest_framework', 'rest_framework.authtoken', 'jwtTest', #저는 test app으로 jwtTest라는 앱을 생성했어요. 아래 그림도 settings.py 에 추가하는 부분입니다.구현하려는 시스템에서 원하는 Auth. Class를 추가해주시면 됩니다. 아래는 urls.py입니다. 요 아래는 jwtTest 앱의 views.py입니다. token을 get하는 것과 endpoint를 call하는 방법에 대해서만 잘 보시면 됩니다.Auth. Class를 JSONWebToeknA.. 더보기
Django Rest Sample App 많은 블로그나 웹 문서에서 다루고 있는 내용이라서저는 참고용 소스와 스샷으로 대신합니다 :) 간단하게 물건에 대해 저장 / 관리할 수 있는 앱이라고 생각하시면 되겠습니다.물론물론 당연히 실제로 이렇게 물건들이 관리되진 않겠죠 !! Django + REST 방식이 어떤 소스로 작동되는가 정도를 공유하는게 목표입니다. 1. 구현된 소스를 작동시키고 localhost:8000/product_a/management 로 접근하면 아래와 같은 화면이 나옵니다. Django REST Framework에서 기본적으로 제공하는 화면인데요.실제 get / post 명령어가 여기에서 가능하도록 UI가 구성되어 있습니다. 접속하면 get이 실행되어서 화면에 출력되고요. 하단에 있는 form을 통해서 post 메소드를 실행할 .. 더보기
django to s3 : certificate error hostname Django 에서 사용자가 업로드하는 파일을 S3에 저장하도록 만들어야 하는 경우가 있습니다. 저는 django-storages 라는 것을 사용하고 있고요. django-storages documentation : http://django-storages.readthedocs.io/en/latest/index.html django-storages package : https://pypi.python.org/pypi/django-storages django-storages git : https://github.com/jschneier/django-storages 사용하다 보면 아래와 같은 에러를 만날 수 있습니다. ㅠㅠㅠ CertificateError: hostname 블라블라 하는 에러인데요. setti.. 더보기
django rest : url in serializer django rest framework에서 serializer에 url field에 대해서 간단하게 기록해둡니다. django rest framework에서는 구현한 API를 테스트하거나 활용할 수 있는 웹 용 UI를 기본적으로 제공하자나요. 아래 그림과 같이 말이죠. 위 그림은 get 으로 모든 목록을 받아온 예시입니다. 그림에도 표시한 것 처럼 url 이라는 필드가 있고 그걸 클릭하면 id가 14인 객체 페이지로 이동하게됩니다. 아래 그림을 참고해주세요. GET 주소가 ~~~~/14로 변경된 것을 확인 할 수 있죠. 객체 페이지로 이동하면 delete나 update 기능을 수행할 수 있고요. url 필드는 기본적으로 제공되는 것인데요. 그러니깐 model에 url 이라는 필드가 존재하지는 않아요.se.. 더보기
django storage s3 connection django-storages를 활용하여 사용자가 업로드하는 파일들을 S3를 통해 serving 할 수 있습니다. django-storages github url : https://github.com/jschneier/django-storages django-storages doc : https://django-storages.readthedocs.org 1. install pip install django-storages 오늘 기준으로 1.5.0 버전이 최신이네요. 2. settings.py INSTALLED_APPS=[ ....., 'storages' ]## 설치한 패키지를 추가해주고요. # MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# MEDIA_URL = '/me.. 더보기
django allauth - facebook reauth off django allauth에서는 여러 소셜 플러그인 로그인을 쉽게 추가할 수 있도록 지원하고 있어요. facebook에 대한 로그인도 지원하고 있어요. 한 달 전에는 아래와 같은 포스팅을 작성한 적이 있구요.2016/08/09 - [Python/Django&Celery] - allauth - facebook login 아무튼 간단하게 설정이 가능한데요.여기서는 reauth에 대해서만 그림 한 장으로 기록해둡니다 :) SOCIALACCOUNT_PROVIDERS = { 'facebook': { 'SCOPE': ['email'], # 'AUTH_PARAMS': { 'auth_type': 'reauthenticate'}, 'METHOD': 'oauth2', 'VERIFIED_EMAIL': False, 'EXCH.. 더보기