pip install django
pip install djangorestframework
INSTALLED_APPS에 'rest_framework' 추가하기
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES' : [ # 기본적인 view 접근 권한 지정
'rest_framework.permissions.AllowAny'
],
'DEFAULT_AUTHENTICATION_CLASSES': [ # session 혹은 token을 인증 할 클래스 설정
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication'
],
'DEFAULT_PARSER_CLASSES': [ # request.data 속성에 액세스 할 때 사용되는 파서
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
]
}
함수 기본 형태
def test():
pass
return True
test()
클래스 기본 형태
class Test():
def test(self):
pass
return True
클래스 상속이란?
immutable = "String is immutable!"
mutable = ["list is mutable!"]
string = immutable
list_ = mutable
string += "immutable string!"
list_.append("mutable list!")
print(immutable)
print(mutable)
print(string)
print(list_)
# 해당 코드를 실행했을 때 나오는 결과를 유추하고
# mutable 자료형과 immutable 자료형은 어떤 게 있는지 알아야 함
mutable 객체는 다른 변수에 값을 할당할 때 | 주소 값을 넣는다
mutable 객체도 주소값을 바라보지 않고, 값을 할당할 수 있게 해줌
django 기본 라이브러리에 있기 때문에 바로 사용할 수 있음
mutable = ["list is mutable!"]
list_ = deepcopy(mutable)
# list_ = mutable[:] 이것도 같은 값을 줌
list_.append("mutable list!")
def test(num1, num2, *args, **kwargs):
# def test(num1, num2):
print(f"num1: {num1}")
print(f"num2: {num2}")
print(args)
print(kwargs)
return
# test(1, 2)
# test(1, 2, 3) # 오류가 발생함
test(1,2,
3,4,5,6,7,8,
num3=5, num4=2)
args(arguments)
kwargs(keyword arguements)
def test(*args, ** kwargs):
print(args)
return True
sample_list = [1,2,3,4,5]
sample_dict = {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5",
}
test(*sample_list)
⚠ *args, **kwargs?
a = [1,2,3,4,5]
print(a) # == print([1,2,3,4,5])
print(*a) # == print(1,2,3,4,5)
🤔 args, kwargs를 사용하지 않은 기본 예제
from user.models import User
def user(request):
if request.method == "POST":
username = request.POST.get('username')
fullname = request.POST.get('fullname')
gender = request.POST.get('gender')
birthday = request.POST.get('birthday')
user = User.objects.create(
username=username,
fullname=fullname,
gender=gender,
birthday=birthday
)
😈 *args, **kwargs를 사용한 예제
... 생략
def user(request):
if request.method == "POST":
user = User.objects.create(
**request.POST
)
stacktrace를 가장 많이 볼 수 있는 곳은 실행 콘솔 창!
def run_a():
print(f"{a}함수가 실행되었습니다")
run_b()
return
def run_b():
print(f"{b}함수가 실행되었습니다")
run_c()
return
def run_c():
print(f"{c}함수가 실행되었습니다")
run_d()
return
def run_d():
print(f"{d}함수가 실행되었습니다")
run_e()
return
def run_e():
print(f"{e}함수가 실행되었습니다")
raise Exception("에러 발생!!")
return
run_a()
🙋♂️ stacktrace?
# python terminal
python -m venv venv # 가상환경 생성
venv/Scripts/activate # 가상환경 진입
패키지를 관리하기 위한 파일
# python terminal
pip install django # 장고 설치
pip install djangorestframework # drf 설치
pip freeze > requirements.txt # requirements.txt에 설치한 pip list 에 작성
pip install -r requirements.txt # requirements.txt에 기입된 pip install
협업 시 코드를 짤 때 규칙을 지켜서 작성하겠다고 하는 약속
파이썬에서의 코드 컨벤션은 Pascal, Snake 두 종류로 구분된다.
1. Pascal : UserLoginView
코드 컨벤션을 지켜서 작성하면 어떤 것이 클래스, 일반 변수나 함수를 구분할 수 있게 된다.
리눅스 및 터미널과 같은 CLI(Command Line Interface) 환경이 매우 많으므로 사용에 익숙해져야함