orange νλ‘μ νΈλ λ©μ¬ 10κΈ° ν΄μ»€ν€μμ μ§νν νλ‘μ νΈμ΄λ€. νμ κΈ°ν/λμμΈ(1), νλ‘ νΈμλ(2), λ°±μλ μ΄ 5λͺ μΌλ‘ μ΄λ£¨μ΄μ‘λ€.
μ°λ¦¬ νκ΅μ κ²½μ°λ κΈ°ν/λμμΈ λΆλ€μ΄ ν΄μ»€ν€μμ μ§νν μμ΄λμ΄λ₯Ό λ°ννκ³ κ°λ°μλ€μ΄ μ°Έμ¬νκ³ μΆμ μμ΄λμ΄μ μ°Έμ¬νλ λ°©μμΌλ‘ νμ ꡬμ±νλ€. λλ νΌμ€λ λΈλλ©μ΄λΌλ μ£Όμ μ νλ‘μ νΈμ μ°Έμ¬νλ€.
0'rangeλ κ°λ¨νκ² 'μμ μ κ°μΉλ₯Ό λΈλλν νλ νΌμ€λ λΈλλ© μλΉμ€'μ΄λ€.
μλΉμ€ μ΄λ¦μ μμΈν μ€λͺ
μ μλμ κ°λ€.
λ°νμλ£
'0'κ³Ό 'Range'λ₯Ό λ¬Άμ λ¨μ΄λ‘, '0'μ΄ λ³΄μ΄μ§ μλ κ²μ λνλ΄λ μ«μμμ κΈ°λ°νλ€. μ¬κΈ°μ 보μ΄μ§ μλ κ²μ μ°λ¦¬λ€μ 'μλ 'μ΄λΌκ³ μ μνλ€. 'Range'λ 'λ²μ, λ, λ€μμ±'μ λ»νλ λ¨μ΄μ΄λ€. λ°λΌμ 0'Range, μ€λ μ§λ μ¬λλ€μ μλ μ κ°μννμ¬ λλ¬λμΌλ‘μ¨ κ·Έλ²μμ λ€μμ±μ ν λλ‘ νΌμ€λ λΈλλ©μ νλ 곡κ°μ μλ―Ένλ€.
λλ μ΄λ²μ μ²μλ€μ λ¨μ΄μλ€. κ·Έλμ λ ν₯λ―Έκ° κ°μλ κ² κ°λ€.
μμ μ λΈλλννμ¬ νΉμ λΆμΌμ λν΄μ λ¨Όμ μμ μ λ μ¬λ¦΄ μ μλλ‘ λ§λλ κ³Όμ μ λ§νλ€. νΉμ λΆμΌμμ μ°¨λ³νλλ λλ§μ κ°μΉλ₯Ό λμ¬μ μΈμ λ°κ²λ νλ κ³Όμ μ λ§νλ€.
λλ λ°±μλ κ°λ°μλ‘μ μ΄ νλ‘μ νΈμ μ°Έμ¬νλ€.
λ©μ¬ μ€μμμ νλ‘ νΈλ React, λ°±μλλ Django κ΅μ‘ VOD μλ£λ₯Ό μ 곡ν΄μ€λ€. κ·Έλμ ν΄μ»€ν€ μ°Έμ¬μ λλΆλΆμ μ κΈ°μ μ€νμ μ¬μ©νλ€.
νμ§λ§ κ·Έλ₯ μΌλ°μ μΈ Web Full Stack Frameworkλ‘μ Djangoλ‘λ Reactμ νμ ν μκ° μλ€. νλ‘ νΈμ λΆλ¦¬λμ΄ νμ νκΈ° μμμ λ°±μλλ REST APIλ₯Ό λ§λ€ νμκ° μλ€.
Djangoμμ REST APIλ₯Ό λ§λ€κΈ° μν΄μλ DRF(Django REST Framework)λ₯Ό μ¬μ©ν΄μΌ νλ€. νμ§λ§ λ©μ¬ μ€μμμλ μ΄μ κ΄ν κ΅μ‘ μλ£λ₯Ό μ κ³΅ν΄ μ£Όμ§ μμλ€.
κ·Έλμ DRFμ κ΄ν 곡λΆν μλ£λ₯Ό μ°Ύλ€κ° μλ μ±
μ λ°κ²¬νλ€. κ·Έλ λΉμμλ μΆνλμ§ 2λ¬ μ λ λ°μ λμ§ μμ λ°λν μ±
μ΄μλ€. κ·Έλ¦¬κ³ DRFμ κ΄ν μ±
μ μ΄κ² κ±°μ μ μΌνλ€. (μ±
λ΄μ©λ λ§μ‘±)
https://www.django-rest-framework.org/ > λ¬Όλ‘ κ³΅μ λ¬Έμλ μ°Έκ³ νλ€.
λλ λ©μ¬ (λ°±μλ νΈλ)μ΄μμ§μ΄μκ³ μκΈ°μ¬μ(λμ리μ)λ€λ νλ‘ νΈμ νμ μ μν΄ DRFμ λν 곡λΆκ° νμνλ€.
κ·Έλμ λ΄κ° μκΈ°μ¬μλΆλ€μκ² REST APIμ κ°λ λ° νμμ±κ³Ό DRFμ κ°λ΅ν κ°λ κ·Έλ¦¬κ³ κ³΅λΆ μλ£λ₯Ό μκ°νλ μΈμ (λ°ν)λ₯Ό μ§ννλ€. λλ κ΄λ ¨ κ°λ λ€μ μ 리ν μ μμ΄ μ’μ κΈ°νμλ€.
λ©μ¬ ν΄μ»€ν€μ μ΄λμ λ 미리 κ°λ°μ ν΄μ€λ νΉμ§μ΄ μλ€. κ·Έλμ ν΄μ»€ν€ λΉμΌμλ μμ λ€μ΄ λ§λ νλ‘μ νΈλ₯Ό ν보νκ±°λ λ§λ¬΄λ¦¬νμ§ λͺ»ν νλ‘μ νΈλ₯Ό λ§λ¬΄λ¦¬ νλ€.
κ·Έλμ κ°λ°μλ μ½ 1.5λ¬ μ λ μμλ κ² κ°λ€.
κΈ°νν μλΉμ€μ κΈ°λ₯μ μλμ κ°λ€. λλΆλΆ κ²μν CRUDλ₯Ό μμ©νλ©΄ κ°λ¨νκ² κ΅¬νν μ μλ κΈ°λ₯λ€μ΄μλ€.
- νμκ°μ , λ‘κ·ΈμΈ, λ‘κ·Έμμ
- νλ‘ν μ 보 보기, νΈμ§
- νλ‘μ°, μΈνλ‘μ°, νλ‘μ&νλ‘μ 보기
- λ΄λΆ νλ₯΄μλ(value, weakness, strength, likes) CRUD
- μΈλΆ νλ₯΄μλ(solve, career, literacy, language, mbti) CRUD
- νλ μΆμ²(ν리μ¦) λ° CRUD
- νκ·Έ CRUD
κΈ°ν/λμμ΄λλΆμ΄ Figmaλ‘ λμμΈμ ν΄μ£Όμ ¨λ€ -> 보λ¬κ°κΈ°
λ¬Όλ‘ κ°λ°μλ€κ³Όλ νμλ₯Ό νλ©΄μ ꡬν κ°λ₯μ±, νμμ± λ±μ λ°μ§λ©° κ°μ΄ μμ ν΄ κ°λ€.
μ 체 ꡬ쑰λ μλμ κ°λ€. λ°±μλλ DRFλ‘ APIλ₯Ό λ§λ€κ³ νλ‘ νΈλ Reactλ‘ APIλ₯Ό μ¬μ©ν΄ νλ©΄μ ꡬμ±νλ€.
λΉμ°ν 무μμ κ°λ°μ μμνλκ² λ³΄λ€ ν μ΄λΈμ μ€κ³νκ³ μμνλκ² μ’μ κ² κ°μ ER-Diagramμ μμ±νλ€. μ΄λ μ²μμΌλ‘ erdcloudλΌλ κ²μ μκ² λκ³ μ¬μ©νλ€. (MySQL μ¬μ©)
μ΄λ² ν΄μ»€ν€ νμμ¬μΈ ν΄λΌμ°λνμ μμ μλ²λ₯Ό μ κ³΅ν΄ μ€μ API μλ²λ₯Ό ν΄λΌμ°λνμ μ λ°°ν¬νλ€.
κ·Έλ¦¬κ³ λ€λ₯ΈλΆλ€λ λ°°ν¬μ μμ΄ μ΄λ €μμ΄ μμκ² κ°μ μλμ κ°μ΄ λ°°ν¬νλ λ°©λ²μ ν¬μ€ν
νμλ€.
Cloudtypeμ Django drf RESTfull API λ°°ν¬νκΈ°
Freenom λ¬΄λ£ λλ©μΈ μμ± λ° CloudFlare λ±λ‘, CloudTypeμ λλ©μΈ μ°κ²°
ν΄λΌμ°λνμ μ 컨ν μ΄λ κΈ°λ°μ ν΄λΌμ°λμλΉμ€λ‘μ 볡μ‘ν μλ²μΈνλΌ κ΄λ¦¬λ₯Ό κ°νΈνκ² ν μ μλ PaaS ν΄λΌμ°λλ₯Ό μ 곡νλ€. λ°°ν¬μ νμν μ¬λ¬ μΈν κ³Ό μ€λΉλ₯Ό μλν ν΄μ μμ£Ό κ°νΈνκ² μλΉμ€λ₯Ό λ°°ν¬ν μ μλ€.(κ΅Ώ)
λ°μ΄ν°λ² μ΄μ€λ AWS RDSμ λ°°ν¬νλ€. μ²μ μ¬μ©ν΄ 보λ κ²μ΄μλλ° μ¬λ¬ νν 리μΌμ λ°λΌ νλ μ΄λ ΅μ§ μκ² ν μ μμλ€.
νλ‘ νΈμ νμ μ μν΄μλ API λ¬Έμλ₯Ό μμ±ν΄μΌ νλ€. Swaggerλ₯Ό μ¬μ©νλ©΄ κ°νΈνκ² λ¬Έμλ₯Ό λ§λ€μ μμμ§λ§, μ μ§ μ§μ μμ±ν΄ λ³΄κ³ μΆμ μμ¬(?)μ΄ μ겨 λ Έμ μ μμ±νκ² λλ€.
APIλ₯Ό λ§λ€μμΌλ©΄ μμ²νμ λ μ΄λ€ κ°μ λ°ν ν΄μ£Όλμ§ νμΈν νμκ° μλ€. μ΄λ₯Ό μν΄ Insomniaλ₯Ό μ¬μ©νλ€.(Postmanμ΄λΌλ κ²λ μλ€)
κ°μ₯ μ’μλ κ²μ REST APIμ λν΄ μ΄ν΄ν κ²μ΄λ€. μ΄μ μλ Kakao API, OpenAPIμ κ°μ΄ μ¬λ¬ κ³΅κ° APIλ€μ΄ μκ³ μ΄κ²λ€μ μ΄μ©νλ©΄ νΈλ¦¬ν μλΉμ€λ₯Ό λ§λ€ μ μλ€λ κ±Έ μ΅ν λ€μ΄μλ€. νμ§λ§ μ΄λ»κ² λμνκ³ μ¬μ©νλμ§ κ·Έλ¦¬κ³ μ νμνμ§μ λν΄ μ νν μ΄ν΄νμ§ λͺ»νμλ€.
μ΄λ² κΈ°νμ REST APIλ₯Ό μ§μ μ€κ³νκ³ λ§λ€μ΄ λ΄μΌλ‘μ λ§μ κ²λ€μ μ΄ν΄ν μ μμλ€. (νμ§λ§ λΆλͺ μμ§ λͺ¨λ₯΄λ κ² λ§μ κ²μ΄λ€. 곡λΆνμ!)
κΈ°μ‘΄μλ gitμ μ¬μ©νκΈ°λ νμ§λ§ κ·Έλ₯ main λΈλμΉμ commitνλ μ λμλ€. κ·Έλμ 1μΈ κ°λ°μ΄μ΄μ λ¬Έμ κ° μμμ§λ§ νμ μμλ λΆμ κ³Ό μ½λ λ³ν© κ³Όμ μμ λ¬Έμ κ° μκΈ΄λ€.
λ€λ₯Έ λμ리μμ ν΅ν΄ git flowλ₯Ό μκ² λμ΄ ν λ² μ μ© μμΌ λ³΄κΈ°λ‘ νλ€. λ¬Όλ‘ μλ μ΄λ―Έμ§μ κ°μ΄ μΈλΆμ μΌλ‘ μ¬μ©νμ§λ μμλ€.
ν¬κ² μλμ κ°μ΄ λΈλμΉλ₯Ό λλμ΄ μ¬μ©νλ€. feature λΈλμΉμμ κΈ°λ₯μ κ°λ°νκ³ λ¬Έμ κ° μλ€λ©΄ develop λΈλμΉμ mergeνλ λ°©μμ΄μλ€.
νμ
μμλ μ¬μ©λλ€ νλ μμΌλ‘ λ μ΅ν νμκ° μλ€κ³ μκ°νλ€.
SECRET_KEY
A secret key for a particular Django installation. This is used to provide cryptographic signing, and should be set to a unique, unpredictable value.
Githubμ Django νλ‘μ νΈλ₯Ό PublicμΌλ‘ μ¬λ¦¬λ 보μ κ΄λ ¨ λ©μΌμ΄ μμλ€. μ΄λ μ²μμΌλ‘ μ¬λ¬ λΉλ°ν€ κ΄λ¦¬μ μ€μμ±μ κΉ¨λ¬μλ€. κ·Έλ¦¬κ³ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκ³ μλμ κ°μ΄ κΈ°λ‘μ ν΄λ¨λ€.
Django secret key μ¬μμ± λ° λΆλ¦¬
λλΆμ΄ AWS RDS λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ κ΄λ ¨ν μ λ³΄λ€ λν λΆλ¦¬νμ¬ μ μ© μμΌ°λ€.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': get_secret("DJANGO_DB_NAME"),
'USER': get_secret("DJANGO_DB_USERNAME"),
'PASSWORD': get_secret("DJANGO_DB_PASSWORD"),
'HOST': get_secret("DJANGO_DB_HOST"),
'PORT': get_secret("DJANGO_DB_PORT"),
'OPTIONS':{
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}
μ΄λ²μ λ΄κ° λ§λ APIλ₯Ό νλ‘ νΈμ μ°κ²°ν΄ μμ±λ κ²°κ³Όλ¬Όμ λ³΄κ³ μΆμμ§λ§ κ·Έλ¬μ§ λͺ»νλ€. π’ λ€λ€ μ΄λ²μ Reactλ₯Ό μ²μ 곡λΆνλ©΄μ νλ‘ νΈ μμ μ μ§ννλ€. κ·Έλ¬λ€ 보λ κ³΅λΆ μκ°μ΄ κΈΈμ΄μ Έμ ν΄μ»€ν€μ΄ λλ λκΉμ§ μμ±νμ§λ₯Ό λͺ»νλ€.
λ΄κ° λ§λ APIκ° μ λμνλμ§ νμΈμ λͺ»ν΄ μμ¬μ μ§λ§(λ¬Όλ‘ λ°±μλμμ ν μ€νΈλ νλ€) λ΄κ° λΆμ‘±ν μ μ μ μ μμλ€. μ΄λ₯Ό ν΅ν΄ λλ κ²μ λ°±μλ κ°λ°μ νλλΌλ νλ‘ νΈμ λν μ΄ν΄λ νμνλ€λ κ²μ΄λ€. λ°±μλλ λ°°ν¬κΉμ§ λ§λ¬΄λ¦¬λμλλ° νλ‘ νΈλ₯Ό λμμ£Όκ³ μΆμ΄λ React κ΄λ ₯ μ§μμ΄ μλ€ λ³΄λ λμμ€ μκ° μμ΄ μμ¬μ λ€.
ν΄μ»€ν€μ΄ λλκ³ .. νκΈ°λ λλκ³ .. νμλ€μκ² "νλ‘μ νΈ λ§λ¬΄λ¦¬νμ!"λΌκ³ νκ³ μΆμμ§λ§ κ°μ μλ‘ λ€λ₯Έ κΈΈμμ λ°μκ² μ΄κ³ μμ΄ κ·Έλ¬μ§ λͺ»νλ€. κ·Έλμ 0'range νλ‘μ νΈλ μ΄λ κ² λ§λ¬΄λ¦¬λλ€.
μμ¬μ λ κ²λ μμμ§λ§ μ λ§ λ°°μ΄ κ² λ§μλ νλ‘μ νΈμλ€. μμΌλ‘ κ°λ°νλ λ° μμ΄ μ΄ κ²½νμ λ§€μ° μ μ©ν κ²μ΄λ€. λ°°μ°κ³ μμ¬μ λ μ μ λ°νμΌλ‘ μμΌλ‘ λμ±λ μ¬λ°λ νλ‘μ νΈλ₯Ό μ΄μ΄ λκ° κ²μ΄λ€!!
μλ νμΈμ :) κ΅λΉμ§μ λΆνΈμΊ ν μ리μ€νΈλμ λλ€! κ°λ° κ³΅λΆ μ΄μ¬ν νκ³ κ³μκ΅°μ! λ©μ§μλλ€ :)
νΉμ μ μ μΌλ‘ κ°λ° 곡λΆνλ©΄μ κΈ°μ λ©΄μ μ λν λλΉκ° λ§λ§νμλ€λ©΄, μ΄λ² κΈ°μ λ©΄μ νΉκ°λ κ΄μ¬ κ°μ Έλ³΄μλ©΄ μ’μ κ² κ°μ λκΈλ‘ νμ¬ μλ΄λλ €μ~
νλ‘ νΈ/ λ°±μλ λͺ¨λ μ€λ ₯μκ³ , μ€μ λ©΄μ κ΄μΌλ‘ νλνκ³ κ³μ κ°λ°μ μ½μΉλκ»μ 무λ£λ‘ μ§ννμλ μ°Έμ¬ν΄ 보μΈμ> https://festa.io/events/4389
κ·ΈλΌ μ€λλ νμ΄ν μ λλ€!ππ»ββοΈπͺπ»