본문 바로가기

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.. 더보기
django rest framework serializer.is_valid() false, errors print 간단하게 기록용 !! django rest framework에서 views.py 단에서 주로 사용자의 request에 대해 serializer 연결을 합니다. 특히 create() 함수 그러니깐 post 요청, 다시 말해서 사용자가 먼가를 생성하는 요청을 한 경우에 사용자가 입력한 값이 적절한지 serializer에 is_valid() 함수를 통해 검토하고 save 해야 합니다 !! 말로 하니깐 알아보기가 불편하네요. 역시 코드가 이해하기 편한 것 같아요. 아무튼 views.py 를 잠시 살펴보시죠. @permission_classes((IsAdminUser, ))class TestDataViewSet(viewsets.ModelViewSet): queryset = TestData.objects.all().. 더보기
Html parsing - beautifulsoup4 (child element) 이전 글 :) 2016/08/20 - [Python/libraries] - Html parsing - beautifulsoup4 (install)2016/08/21 - [Python/libraries] - Html parsing - beautifulsoup4 (find_all image src) 이번에는 특정 element의 child element의 값을 얻는 과정을 간단하게 작성해두려고 합니다. 먼저 사용하려는 웹 소스는 제 블로그이구요. http://ngee.tistory.com 현재 여러분은 이 글을 읽고 있다면 접속하신 상태겠군요 !!!아무튼 왼쪽에 카테고리가 보이는데 이걸 파싱해보겠습니다. 소스를 보니 하위에 li로 구성되어있네요. (빨간색으로 표시된 부분) 이렇게 해보려고 합니다. 1. 를 .. 더보기
Html parsing - beautifulsoup4 (find_all image src) 이전 글 :) 2016/08/20 - [Python/libraries] - Html parsing - beautifulsoup4 (install) 이번에는 간단한 예제로 Beautifulsoup4 에서 제공되는 find_all을 알아보도록 하겠습니다 !!! find_all 이라는 함수는 이름에서도 알 수 있듯이 동일한 것을 모두 찾아주는 함수입니다. 자세한 설명은 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all 을 참고하세요 :) https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all 실제 웹 페이지를 통해서 한 번 find_all이 어떤 역할을 할 수 있는지 알아보아요. 만만한건.. 더보기
Html parsing - beautifulsoup4 (install) 살다보면 하기 싫은 Html parsing도 해야 하는 날이 있는거죠 :) 아주 예전에 beautifulsoup을 통해서 Html parsing을 했던 적이 있습니다. 오늘 다시 설치하려고 찾아보니 버전 4가 나왔더라구요. 그리고 이전 보다는 수월하게 Parsing이 가능해진 것 같습니다. 암튼 Python 으로 Html Parsing을 처리해야 하는 분들은 4 버전으로 하는게 좋을 것 같아요 !!! pip 로 검색해보면 아래와 같습니다. pip install beautifulsoup4 위 명령어로 설치하실 수 있습니다. 뒤에 꼭 4를 붙여서 설치하세요 !! 안그럼 3버전이 설치되니깐요!! 아래 사이트에 들어가면 좋은 예제 및 설명이 되어있어요!! 참고하시길 !! https://www.crummy.com.. 더보기
django robots.txt django 에서 robots.txt url mapping 하는 방법을 간단하게 기록 :) project의 urls.py에 아래 내용만 입력하면 끝이긴 해요.. (copy)url(r'^robots.txt$', TemplateView.as_view(template_name="robots.txt", content_type="text/plain"), name="project_robots_file"), 물론 robots.txt 라는 파일은 templates 폴더에 위치하고 있어야겠죠. 아래는 robots.txt 파일에 접속한 결과 화면입니다 :) 더보기
allauth - facebook login 이번에는 allauth를 사용해서 facebook 로그인하는 방법에 대해서 기록해두려고 합니다. 정리겸 기록용이라 자세한 설명은 패스 :) 1. allauth install - pip install django-allauth #django-allauth==0.25.2 2. allauth add to project - urls.py : url(r'^accounts/', include('allauth.urls')), - settings.py (http://django-allauth.readthedocs.io/en/latest/) 자세한 것은 페이지에서 확인하세요 :) 아래 그림에서 빠진 것도 있을 수 있어요. # allauth ============ startSITE_ID = 6EMAIL_BACKEND = .. 더보기
django collectstatic django manage.py 에서 제공되는 기능 중에 하나로 collectstatic이 있습니다. collectstatic은 settings.py에서 정의한 STATICFILES_DIRS에 있는 static 파일들을 STATIC_ROOT에 지정한 폴더로 모아주는 기능입니다. STATIC_ROOT = os.path.join(BASE_DIR, 'static')STATIC_URL = '/static/'STATICFILES_DIRS = ( os.path.join(DEVELOPMENT_DIR, 'dependency/dist'), os.path.join(BASE_DIR, 'TTT/TEST/statics'),) python manage.py collectstatic 하면 프로젝트 BASE_DIR의 static 이라.. 더보기
django admin site : PRINT - all columns(fields) of model django admin 페이지에서 model의 특정 컬럼을 시각화하는 방법에 대해서는 지난 포스팅에서 다룬 적이 있슴다 :) 요거구요 :)2016/04/20 - [Python/Django&Celery] - django admin site - list display 이번에는 모델이 가지고 있는 모든 컬럼을 시각화하는 방법에 대해서 정리해둡니다 ㅠ 1. 예를 들어서 test 라는 app에 Cup 이라는 모델이 있다고 가정할께요. admin.py 안에 아래와 같이 작성함으로써 모든 컬럼을 불러 올 수 있어요. from test.models import Cup class CupAdmin(admin.ModelAdmin): list_display = Cup._meta.get_all_field_names() admi.. 더보기
파이썬 basic - 파일 읽을 때 newline (/n) 제거하기 (remove newline) 파이썬으로 파일을 읽어들일 때 각 줄의 맨 끝에 있는 newline(/n)을 제거하는 방법에 대해서생각나는 것만 정리해봅니다 :) 실험에 사용된 textfile은 아래와 같아요. 일단 읽어들여서 출력하는 소스는 아래와 같이 작성할 수 있습니다. with open("./test.txt", "r") as f : for i in f.readlines(): print i 작동시켜보면 아래와 같이 출력됩니다.이유는 파일 각 라인의 맨 끝에 newline이 들어가 있기 때문입니다 :)이걸 삭제하는 방법은 여러 가지가 있습니다. 구글에 쳐보면 참 많이 나와있구요. 여기서는 그냥 기록용으로 2개만.. 첫 번째 방법은 각 라인에서 -1까지 자르는 것입니다. 아래 line 5를 보면 i[:-1]를 통해 각 라인의 첫 번째.. 더보기
파이썬 basic - 리스트에서 최대값 찾기 (find the maximum value in list.) 이번에는 리스트에서 최대값을 찾는 것 + 최대값의 index 값을 찾는 것에 대해서 정리해두려고 합니다. 정리해야 생각나게 되는 것 같아서요. 아래 그림에 모든 내용이 들어가 있긴합니다. >>> import random>>> test = [random.random() for i in range(0, 20)]>>> print test[0.0907089251039096, 0.13237816180650663, 0.633094306790336, 0.14850518076559094, 0.6688298962786413, 0.2639774163318962, 0.5574325879302344, 0.8372412165395211, 0.33809895084074815, 0.28770998595536523, 0.299230.. 더보기
django admin site : boolean filter 관련 포스팅 - django admin site - list display : http://ngee.tistory.com/853 장고(django)에서 제공되는 Admin site는 쓸모가 많습니다 :)이번 포스팅에서는 boolean filter를 적용하는 방법에 대해서 정리해둡니다. 제가 사용하고 있는 django 버전은 1.9.5 입니다. 1. 아래 화면은 Filter를 하나 추가한 화면입니다. 필터의 종류는 BooleanFieldListFilter 이고요. 여러 컬럼 중에 ea_status 라는 컬럼을 활용한 것입니다. 기본적인 django admin site에 접속하면 filter는 하나도 존재하지 않습니다. 필터를 추가함으로써 많은 객체 중에서 원하는 객체를 쉽고 빠르게 찾을 수 있으니깐 객체가.. 더보기
DRF - ModelViewSet Custom Method 저는 Django REST Framework 를 통해서 Restful API를 만들 때 View 단에서는 ModelViewSet을 주로 활용하고 있어요.그냥 왠만한 것은 그냥 사용해도 되고, Custom이 필요할 때는 필요한 Method만 Override 해서 사용하면 좋더라구요. 예를 들어서 Get으로 들어오는 요청은 list 함수를 Override하면 되고 Post 요청은 create 함수를 Override 하면 됩니다.함수를 호출하는 것은 Router에서 이뤄지기 때문에 어떤 Router를 사용하느냐에 따라 약간 달라질 수 있겠습니다. DRF Homepage에 보면 http://www.django-rest-framework.org/api-guide/routers/Router에 대해 자세히 설명되어 .. 더보기
파이썬 basic - GET Current / Parent Directory Name 파이썬에서 현재 폴더의 절대 경로를 얻기 위한 방법은 아래와 같습니다. import os >> os.getcwd() 위에서는 /user/local/lib 위치에서 수행해본 것이구요. 장고(django)에서는 settings.py 초반에 아래와 같은 소스가 나옵니다. 위 BASE_DIR을 출력해보면 프로젝트 홈의 절대경로가 나오구요.위 BASE_DIR을 활용해서 STATIC FILE의 위치를 설정하기도 합니다. 현재 폴더의 상위 폴더는 아래와 같이 얻을 수 있습니다. 수 많은 방법들 중에 하나일 뿐이죠 !! 더보기
DRF - Method 제한, 허용 Django Rest Framework에서 특정 Method만 허용하고 싶다면 다르게 말하면 특정한 Method만 사용할 수 있도록 제한하고 싶으면 Viewset에 http_method_names 속성을 적용하면 됩니다. 이것은 django에서 제공하는 속성이고 좀 더 rest framework 답게 사용하는 방법도 존재하지만 저한테는 이게 더 편한거 같아요. 아래 그림은 post만 허용한 상태에 대한 예제를 나타냅니다. 그림에서 나타난 것 처럼 Allow에 POST만 보입니다. 아래 그림들은 Get과 Post 방식을 허용한 상태를 나타냅니다. 그림에서 볼 수 있는 것 처럼 POST,GET 방식이 허용되고 하단에는 GET으로 얻어진 값들이 출력됩니다. :) 더보기