본문 바로가기

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().. 더보기
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.. 더보기
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에 대해 자세히 설명되어 .. 더보기
DRF - Method 제한, 허용 Django Rest Framework에서 특정 Method만 허용하고 싶다면 다르게 말하면 특정한 Method만 사용할 수 있도록 제한하고 싶으면 Viewset에 http_method_names 속성을 적용하면 됩니다. 이것은 django에서 제공하는 속성이고 좀 더 rest framework 답게 사용하는 방법도 존재하지만 저한테는 이게 더 편한거 같아요. 아래 그림은 post만 허용한 상태에 대한 예제를 나타냅니다. 그림에서 나타난 것 처럼 Allow에 POST만 보입니다. 아래 그림들은 Get과 Post 방식을 허용한 상태를 나타냅니다. 그림에서 볼 수 있는 것 처럼 POST,GET 방식이 허용되고 하단에는 GET으로 얻어진 값들이 출력됩니다. :) 더보기
django admin site - list display 장고(django)에서 제공하는 강력한 앱은 admin인 것 같아요.아래에는 django의 list display의 중요성을 간단하게 정리합니다. :) 1. admin 페이지에 단순 model을 표출하는 것은 아래와 같은 소스로 가능합니다. models.py에 있는 클래스 중 Comment를 불러오고 이것은 admin site에 등록하는 소스이죠. 적용된 화면을 보면 아래와 같아요. 좋습니다.!! comment가 5개 있다는 정도는 알 수 있겠네요. 2. 기존 소스를 조금 변경해서 아래와 같이 수정해봤습니다. class를 하나 만들었는데요. CommentAdmin입니다. !! list_display에 여러 컬럼 이름을 작성해줬고! 이것이 중요합니다. :) list_display에 작성한 것들이 한 번에 .. 더보기
QueryDict 활용, 변경해서 사용 아래는 DRM에서 사용자의 Post 메소드를 처리하는 함수 중 일부입니다. request를 출력해보면 QueryDict 객체라는 것을 알 수 있는데요. QueryDict는 수정이 불가합니다. 즉 immutable 하죠 !! 많이 발생하는 경우는 아니지만 어째뜬 QueryDict의 내용을 수정해야 할 경우가 있습니다. 여러 가지 방법이 존재하겠지만 아래와 같은 방법도 가능합니다. 1. QueryDict를 Dictionary로 변경한다. - QueryDict 클래스의 함수 중에 dict()가 있는데요. 이것은 QueryDict를 Dictionary로 변경해줍니다. - ex) request.data.dict() - https://docs.djangoproject.com/en/1.9/ref/request-res.. 더보기
DRF - Django Rest Delete 403 Error Delete 요청을 Django Rest Framework로 보내는 것에서 헤맸다. 일단 jQuery를 활용하여 Post 요청을 하는 예시를 보면 아래와 같다. jQuery기반의 cookie 라이브러리를 사용하고 있는데 아무튼 위와 같은 소스를 통해 DRF 기반의 restful API에 요청하는 것이 가능했다. 당연히 위와 같은 방법으로 delete도 실험했는데 이상하게 delete는 잘 안되고 아래와 같은 에러가 발생했다.CSRF 에러 !! 해결하기 위해서는 post와는 조금 다르게 ajax 셋팅이 필요했다.CSRF Token 값을 beforeSend를 통해 전달해야한다. post도 위와 같은 방식으로 가능한지 테스트를 해봐야겠다.!!방금해봤다!! 가능하다!!! 그럼 아래 방식으로 통일해서 사용해야겠다.. 더보기
psycopg2 pip 설치 에러 해결 정말 오랜만에 포스팅 !! 그동안 몇 가지 작업을 하면서 쌓인 내용을 정리해야 하는데 시간이 없네요.간단하게만 정리 :) psycopg2를 설치시에 pip를 활용하는 경우가 많은데 이게 에러가 날 때가 있어요. 에러 내용을 찍어두진 못했네요. ㅠㅠ 아래와 같은 방법으로 해결합니다. 먼저 PostgreSQL의 bin 폴더를 찾아서 PATH에 추가합니다. (export PATH=$PATH:/Library/PostgreSQL/9.5/bin) 다음 pip를 통해 psycopg2를 설치하면 됩니다. (pip install psycopg2) 더보기
django - model field example django model field에 대해서 작성해봅니다. model field는 여러 가지가 있고, 옵션(option)들도 있어서 원하는 form이나 database table을 만들 수 있습니다. 여러 model field를 한 번 생성해보고 admin 페이지에서 어떻게 보이는지확인해보는 것이 이번 포스팅의 목적입니다. 일단 model field에 대한 django 공식홈의 문서는 아래 url과 같습니다.url : https://docs.djangoproject.com/es/1.9/ref/models/fields/ model filed option에 대해서는 아래 url을 참고하세요.url : https://docs.djangoproject.com/es/1.9/topics/db/models/#field.. 더보기
django - model and admin django에 대해 tutorial 부터 다시 보고 있습니다. 이번 포스팅에서는 tutorial에 나와 있는 것을 따라해보는 정도입니다. tutorial url https://docs.djangoproject.com/en/1.9/intro/tutorial02/ 위 tutorial 중 하단에 있는 내용 중 admin 페이지에 관한 것입니다.model에 attribute는 데이터베이스의 column과 유사하게 인식해도 될 것 같습니다. 아래와 같은 단계를 통해 admin 페이지의 기능을 확인해보고자 합니다. 1. super 사용자 생성 (createsuperuser)2. 여러 attribute 가진 model 생성3. admin.py 수정4. admin 페이지 접속 및 확인 1. python manage.p.. 더보기
pycharm 5.0.3 - (3) git, commit, push pycharm에 대해서 알아보고 있어요 :) 요즘 IDE에서 버전관리 서비스와 연계는 기본인 것 같아요.Pycharm에서도 여러 버전관리 서비스와 연계할 수 있네요. 앞선 포스팅에서 pycharm과 git / github 연계를 해봤구요. 참고 pycharm 5.0.3 - (1) download, run, virtualenv / http://ngee.tistory.com/815pycharm 5.0.3 - (2) github 연계 / http://ngee.tistory.com/818pycharm 5.0.3 - (3) git, commit, push / http://ngee.tistory.com/821 이번에는 수정된 파일을 commit해서 push하는 과정을 간단하게 정리해봅니다아.다른 IDE와 크게 다르.. 더보기
pycharm 5.0.3 - (2) github 연계 pycharm에 대해서 알아보고 있어요 :) 요즘 IDE에서 버전관리 서비스와 연계는 기본인 것 같아요.Pycharm에서도 여러 버전관리 서비스와 연계할 수 있네요. 저는 git / github만 밖에 모르기 때문에 요걸 연계할 수 있으면 끝이에요. 참고 pycharm 5.0.3 - (1) download, run, virtualenv / http://ngee.tistory.com/815pycharm 5.0.3 - (2) github 연계 / http://ngee.tistory.com/818pycharm 5.0.3 - (3) git, commit, push / http://ngee.tistory.com/821 아래 단계대로 따라 하면 github와 연계할 수 있더라구요. 1. pycharm create .. 더보기