Django에서 get() 과 filter() 는 모두 데이터베이스에서 객체를 가져오거나 쿼리를 필터링하는데 사용된다. 하지만 이 두 메서드간에는 몇 가지 중요한 차이가 있다. get() method 이 메서드는 조건에 맞는 단일 객체를 가져오려고 할 때 사용된다. 조건에 맞는 객체가 없거나 여러 개인 경우 DoesNotExist 또는 MultipleObjectsReturned 예외를 발생시킨다. get() 메서드를 사용하여 조건에 맞는 객체의 존재 유무를 판단할때는 try: except 문을 사용한다. try: obj = MyModel.objects.get(name='example') # 조건에 맞는 객체가 있음 except MyModel.DoesNotExist: # 조건에 맞는 객체가 없음 excep..
python
DRF로 작성한 API에 POST Request를 보냈을 시 View와 Serializer에서 어떤 흐름으로 코드가 흘러가고 데이터베이스에 생성되는지 나름대로 정리해보았다. # snippets/models.py from django.db import models from pygments.lexers import get_all_lexers from pygments.styles import get_all_styles 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([(item, item) fo..
- 비공개 속성 비공개 속성이란 클래스 바깥에서는 접근할 수 없고 클래스 안에서만 사용할 수 있는 속성입니다. 변수 앞에 밑줄 두개(__)를 붙이면 비공개 속성이 됩니다. class Person: def __init__(self, name, pocket): self.name = name self.__pocket = pocket def give_candy(self, amount): self.__pocket -= amount print('사탕이 {}개 남았어요.'.format(self.__pocket)) pocket 속성 앞에 밑줄 두개를 붙여 비공개 속성으로 만들었습니다. >>> Mary = Person('Mary', 5) >>> Mary.name 'Mary' >>> Mary.pocket Traceback..
- 전역 변수, 전역 범위 >>> x = 100 >>> def foo(): print(x) >>> foo() 100 >>> print(x) 100 위에서 함수 바깥에서 만들어진 변수 x는 함수를 포함한 스크립트 전체에서 접근할 수 있는 변수인 전역변수입니다. 이 전역변수에 접근할 수 있는 모든 범위를 전역 범위라고 합니다. - 지역 변수, 지역 범위 >>> def foo(): x = 100 print(x) >>> foo() 100 >>> print(x) Traceback (most recent call last): File "", line 1, in print(x) NameError: name 'x' is not defined 함수 안에서 만들어진 변수 x는 함수 안에서만 접근할 수 있는 지역변수입니다...
- % 이용 >>> '%d'%1 '1' >>> '%3d'%1 ' 1' >>> '%03d'%1 '001' '%d'%숫자 %d 자리에 숫자 포매팅 '%자리수d'%숫자 자리수대로 앞에 빈 칸을 채운 후 숫자로 포매팅 '%0자리수d'%숫자 자리수대로 앞에 0을 채운 후 숫자로 포매팅 - format 이용 >>> '{0:3d}'.format(1) ' 1' >>> '{0:03d}'.format(1) '001' '{0:자리수d}'.format(숫자) '{0:0자리수d}'.format(숫자) >>> '{0:3}'.format(1) ' 1' >>> '{0:03}'.format(1) '001' d를 빼고 입력시에도 실행됩니다.
- 함수 선언 >>> def hello(): print('안녕하세요') >>> hello() 안녕하세요 def 함수명(): 실행할 코드 함수 호출 시 입력한 코드가 실행됨 - 덧셈 함수 선언 >>> def add(a, b): print(a + b) >>> add(10, 2) 12 def 함수명(매개변수1, 매개변수2): 실행할 코드 - 함수 결과 반환 >>> def add(a, b): return(a + b) >>> x = add(10, 30) >>> x 40 def 함수명(매개변수1, 매개변수2): return 반환값 return을 사용하면 값을 함수 바깥으로 가져올 수 있고 값을 다른 변수에 저장할 수도 있습니다. >>> def add_sub(a, b): return a + b, a - b >>> x..
input()은 사용자가 어떤 값을 입력하면 그 값을 변수에 저장하는 함수입니다. >>> a = input() input() 함수를 호출하면 사용자의 입력을 기다리게 됩니다. 여기서 사용자가 값을 입력하면 이 값은 변수에 저장됩니다. >>> a = input() 1 >>> a '1' 사용자가 1을 입력하니 a안에 '1'이 들어간 것을 볼 수 있습니다. 여기서 1이라는 숫자를 입력했는데 따옴표로 감싸져있는 문자열 '1'이 저장되었습니다. 이것은 input() 함수는 입력되는 모든 값을 문자열로 취급하기 때문입니다. input() 함수의 괄호안에 아무것도 입력하지 않으면 사용자의 입력을 기다리는 동안 아무것도 나타나지 않지만 문자열을 넣어 사용자의 입력을 도울 수 있습니다. b = input('아이디를 입력..
- 파이썬 변수 선언 방법 변수 이름 = 변수 값 a = 1 # 정수형 변수 선언 a = 1.0 # 실수형 변수 선언 a = 'Hello world!' # 문자형 변수 선언 - 변수 값의 데이터 타입 확인법 변수를 선언한 후 type()함수를 사용하면 변수값의 데이터 타입을 확인할 수 있습니다. >>> a = 1 >>> type(a) >>> 변수 a의 값은 정수 1 이므로 integar(정수)의 약자 int가 변수 a의 데이터 타입으로 나타났습니다. 데이터 타입의 종류는 int(정수형), float(실수형), str(문자형) 등이 있습니다. - 파이썬 변수명으로 사용 불가능 한 것들 숫자로 시작 불가 ex) 30a 밑줄문자(_)를 제외한 특수문자 사용 불가 ex) a&, a@, a- .. 파이썬 키워드 ..