Class in Python3 클래스의 구조는 Python2와 Python3가 다름. Python2는 더 이상 개발이 되지 않기에 Python3 내용만 기록. 클래스를 정의하면 클래스 오브젝트(객체)가 되고, 인스턴스를 생성하면 인스턴스 오브젝트(객체)가 됨. 편의상 클래스 오브젝트를 클래스로, 인스턴스 오브젝트를 인스턴스로 표기. 클래스 생성 클래스는 아래와 같이 class 구문을 사용하여 정의하며 클래스가 생성됨. class Test: pass 인스턴스 생성 인스턴스는 아래와 같이 생성하며 인스턴스가 생성됨. test = Test() 변수 클래스 변수 class Test: class_var = 0 >>> Test.class_var 0 >>> test = Test() >>> test.class_var ..
Why? standalone script를 실행하고자 하는 경우, DB에 어떤 내용을 넣고 싶은 경우, 기타 등등 작업이 필요한 경우 custom command를 만들어 사용하면 유용. How? 해당 app 디렉토리에 app/management/commands/command_name.py 형식으로 파이썬 파일 생성. 파일 이름이 command 이름이 됨. from django.core.management.base import BaseCommand, CommandError class Command(BaseCommand): help = 'Help message' def add_arguments(self, parser): # CLI 창에서 받을 argument 정의 parser.add_argumnet('arg..

ViewSet 클래스는 read 또는 update 같은 opertaions만 지원하고 get 또는 put 같은 메소드 핸들러를 지원하지 않는 점을 제외하고는 View와 거의 똑같다. ViewSet 클래스는 일반적으로 ViewSet이 view들의 세트 안으로 instantiated되지는 마지막 단계, 즉 Router 클래스가 복잡하게 정의된 URL 설정을 핸들링하기위해 사용되어지는 순간 메소드 핸들러의 세트를 bound 한다. from rest_framework import viewsets class UserViewSet(viewsets.ReadOnlyModelViewSet): """ This viewset automatically provides `list` and `detail` actions. """..

Creating an endpoint for the root of our API # views.py from rest_framework.decorators import api_view from rest_framework.response import Response from rest_framework.reverse import reverse @api_view(['GET']) def api_root(request, format=None): return Response({ 'users': reverse('user-list', request=request, format=format), 'snippets': reverse('snippet-list', request=request, format=format) }) ..

Adding information to our model from django.db import models from pygments.lexers import get_all_lexers, get_lexer_by_name from pygments.styles import get_all_styles from pygments.formatters.html import HtmlFormatter from pygments import highlight LEXERS = [item for item in get_all_lexers() if item[1]] LANGUAGE_CHOICES = sorted([(item[1][0], item[0]) for item in LEXERS]) STYLE_CHOICES = sorted([..
Regular Django views from django.http import HttpResponse, JsonResponse from django.views.decorators.csrf import csrf_exempt from rest_framework.parsers import JSONParser from .models import Snippet from .serializers import SnippetSerializer @csrf_exempt def snippet_list(request): """ List all code snippets, or create a new snippet """ if request.method == 'GET': snippets = Snippet.objects.all()..
from rest_framework import serializers from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES class SnippetSerializer(serializers.Serializer): id = serializers.IntegerField(read_only=True) title = serializers.CharField(required=False, allow_blank=True, max_length=100) code = serializers.CharField(style={'base_template': 'textarea.html'}) linenos = serializers.BooleanField(required=..
$ pip install django-filter # settings.py REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.SearchFilter', 'rest_framework.filters.OrderingFilter', ), } DEFAULT_FILTER_BACKENDS rest_framework.filters.BaseFilterBackend: 필드 필터링 기능을 제공. 앞서 설치한 django-filter 패키지를 사용. 필터링할 수 있는 필드 세트를 지정하거나 좀 더 사용자 정의된 설정이 들어간 rest_framework.f..
인증체계? request.user: 사용자 모델 인스턴스. django.contrib.auth.User requet.auth: 인증 토큰과 같은 추가 인증 정보 Django Rest Framwork는 rest_framework.authentication 모듈에서 다음 세 가지 인증 클래스를 제공. 모두 BaseAuthentication 클래스의 서브 클래스. BasicAuthentication: 사용자 이름과 암호에 대한 HTTP 기본 인증을 제공한다. 제품으로 사용하는 경우에는 API가 HTTPS에서만 사용 가능해야 한다. SessionAuthentication: 인증을 위해 장고의 세션 프레임워크와 함께 작동 TokenAuthentication: 간단한 토큰 기반 인증을 제공. 요청에는 토큰의 접두어..