λͺ©λ‘νλ‘μ νΈ (17)
Study Anything π§
μ§λ ν¬μ€νΈκΉμ§ ꡬννλ μν μμ± κΈ°λ₯λ€μ μ₯κ³ κΈ°λ³Έ κΈ°λ₯μ μ΄μ©ν΄μ ꡬννλ€. κ·Έλ¬λ μ°λ¦¬ νλ‘μ νΈκ° νλ‘ νΈμ λ°±μλκ° λλ μ ΈμκΈ° λλ¬Έμ νλ‘ νΈμ λ°±μλλ₯Ό μ°κ²°νλ λ°©λ²μ μ¬λ¬ λ°©λ©΄μΌλ‘ λͺ¨μνλ€. κ·Έλ¬λ©΄μ μ΅μ’ μ μΌλ‘ μ₯κ³ λ μ€νΈ νλ μμν¬ (DRF: Django REST Framework) λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ νλ‘ νΈμΈ 리μ‘νΈμ λ°±μλμΈ μ₯κ³ λ₯Ό μ°κ²°νκ³ μ νμλ€. κ·Έλ¬λ μ€ μ€λ λλμ΄!! νλ‘ νΈμΈ 리μ‘νΈ νμ΄μ§μμ μμ±ν μνμ λ΄μ©μ λ°±μλμΈ μ₯κ³ λͺ¨λΈμ μ μ₯νκ³ λΆλ¬μ€λ κ²μ μμ±ν΄μ κ·Έ κ³Όμ μ κ°λ¨νκ² ν¬μ€ν ν΄λ³΄λ €κ³ νλ€. (1) μ₯κ³ : review/urls.py urls.py νμΌμμλ μ₯κ³ μλ²μ url λ€μ views.py μ ν¨μλ€κ³Ό μ°κ²°νλ λ΄μ©μ λ΄κ³ μλ€. path('', vie..
μ΄μ ν¬μ€νΈμμ 리μ‘νΈμ μ₯κ³ λ₯Ό μ°κ²°νλ λ°©λ² μ€μ REST APIλ₯Ό μ΄μ©ν΄ json κ°μ²΄λ₯Ό μ»κ³ , κ·Έκ²μ 리μ‘νΈμμ μ¬μ©νλλ‘ νλ λ°©λ²μ΄ μλ€κ³ μΈκΈνλ€. νμ§λ§ μ΄νμ κ³μ νμλ₯Ό μ§ννλ©΄μ μ΄ λ°©λ²κ³Ό μ μ©ν μ μλ λ°©λ²μ μ°Ύμλλ€. λ°λ‘ Axiosλ₯Ό νμ©ν λ°©λ²μΈλ° Axiosλ λΈλΌμ°μ , Node.jsλ₯Ό μν HTTP λΉλκΈ° ν΅μ λΌμ΄λΈλ¬λ¦¬μ΄λ€. Promise APIλ₯Ό μ¬μ©νλ©° μμ²(Request)κ³Ό μλ΅(Response)μ json ννλ‘ λ³κ²½ν΄μ€λ€. μ΄ λ λΉλκΈ° λ°©μμ΄λ νμ΄μ§μ μμ²(Request)μ 보λ΄κ³ μλ΅(Response)μ λ°λ νμκ° 1:1 κ΄κ³λ‘ μ΄λ€μ§λ κ²μ΄ μλ, νμ΄μ§λ₯Ό 리λ‘λ(Reload)νμ§ μμλ μλ²μ κ³μν΄μ μμ²μ 보λ΄λ λ°©μμ΄λ€. Requestλ₯Ό 보λ΄κΈ° λλ¬Έ..
μ°λ¦¬ νλ‘μ νΈλ λ°±μλλ‘ μ₯κ³ (Django)λ₯Ό μ¬μ©νκ³ νλ‘ νΈμλλ‘ λ¦¬μ‘νΈ(React)λ₯Ό μ¬μ©νλ€. λλ¬Έμ λμ μ°λνλ κ³Όμ μ΄ νμνλ°, μ΄λ² μ£Όμ μμλ μ΄ κ³Όμ μ λ€λ€λ³΄λ €κ³ νλ€. λ¨Όμ μ°λ¦¬ νλ‘μ νΈμ μν©μ μ€λͺ ν΄μΌ νκ² λ€. μ°λ¦¬ νλ‘μ νΈλ νλ‘ νΈμλλ₯Ό λ΄λΉνλ νμκ³Ό λ°±μλλ₯Ό λ΄λΉνλ νμμ΄ λλ μ Έμλ€. μ¦, ν κ°λ°νκ²½μμ 리μ‘νΈμ μ₯κ³ λ₯Ό λμμ μ¬μ©νμ§ μλλ€. λλ¬Έμ 리μ‘νΈμ μ₯κ³ λ₯Ό μ°λν μ μλ λ°©λ²μ λ¨Όμ μ΄ν΄λ³΄μ. (1) μ₯κ³ -> 리μ‘νΈ : json κ°μ²΄λ‘ λ°μ΄ν° 보λ΄κΈ° μ΄ λ°©λ²μ μ₯κ³ μ 리μ‘νΈ μ°λμ μμλ³Ό λ κ°μ₯ λ§μ΄ λμλ λ΄μ©μ΄λ€. μ₯κ³ μ Django REST Framework(DRF) λ₯Ό μ΄μ©ν΄ μ₯κ³ μ λͺ¨λΈμ json κ°μ²΄λ‘ μ»μ μ μλ€. μ΄ κ³Όμ μ μλ£νλ©΄ μΉνμ΄μ§μμ..
μ§κΈκΉμ§ μν λͺ©λ‘λ€μ 리μ€νΈλ‘ μ 체 μ‘°ννλ νμ΄μ§μ κΈμ°κΈ° νμ΄μ§λ₯Ό ꡬννλ€. μ΄λ²μλ μν λͺ©λ‘μμ νλλ₯Ό μ ννμ λ ν΄λΉνλ μνμ μμΈ νμ΄μ§λ₯Ό ꡬννλ €κ³ νλ€. (1) list νμΌ λ³΄κΈ° νμΌ > templates/review/list.html ... DBμμ μν λͺ©λ‘μ λ°μμμ νμ΄μ§μ λμ°λ list.html μ½λ μ€ μΌλΆμ΄λ€. κ°κ°μ μνμ νκ·Έλ‘ κ°μΈ ν΄λΉ λ΄μ©μ μ ννλ©΄ μνμ μμΈ νμ΄μ§λ‘ μ΄λνλλ‘ κ΅¬ννλ €κ³ νλ€. ν΄λΉ μμΈνμ΄μ§μ url μ "http://κΈ°λ³Έμ£Όμ/review/detail/μνId" λ‘ μ€μ νλ€. (2) urls.py νμΌ μμ νμΌ > review/urls.py urlpatterns = [ ... path('detail//', views.detail, na..
μν μμ± ννΈμ 첫λ²μ§Έ λ¨κ³μμ μ₯κ³ λͺ¨λΈλ‘ μν DBλ₯Ό λ§λ ν κ·Έ DB μμ μνλ€μ μΉνμ΄μ§μμ μ‘°ννλ κΈ°λ₯κΉμ§ ꡬννλ€. μ΄λ²μ κ·Έ λ€μ λ¨κ³λ‘ μμ±ν μνμ DBμ λ±λ‘νλλ‘ νλ κΈ°λ₯μ ꡬννλ€. μΉνμ΄μ§μμ μνμ μ΄ ν κ·Έ λ΄μ©μ μν DBμ λ£κ³ μ 체 λͺ©λ‘μΌλ‘ μ‘°ννλ κΈ°λ₯μ΄λ€. (1) μν λͺ©λ‘μ μ‘°ννλ νμ΄μ§μ κΈμ°κΈ° νμ΄μ§λ‘ μ΄λν μ μλ μμλ₯Ό μΆκ°νλ€. νμΌ > templates/review/list.html ... κΈμ°κΈ° ... (2) urls.py νμΌμ write νμ΄μ§μ κ΄λ ¨λ λ΄μ©μ μΆκ°νλ€. νμΌ > review/urls.py urlpatterns = [ ... path('write/', views.write, name='write'), ... ] urls.py..
νλ‘μ νΈ λ΄μ©λ€ μ€μ μν μμ± ννΈλ₯Ό μμνλ€. μν μμ± μμλ μ¬λ¬κ°μ§ κΈ°λ₯λ€μ΄ μλλ°, μ΄λ²μλ μνμ μ 체 λͺ©λ‘μ μ‘°ννλ κΈ°λ₯μ μννλ€. μνμ μ μ₯ν DBλ₯Ό λ§λ€κ³ λλ―Έ λ°μ΄ν°λ₯Ό λ£μ λ€μ, κ·Έ λ΄μ©λ€μ μλ‘μ΄ νμ΄μ§μμ μ‘°ννλ κ³Όμ μΌλ‘ μ§ννλ€. DBλ₯Ό λ§λ€κΈ° μν΄μ μ₯κ³ μ κΈ°λ³Έ κΈ°λ₯μΈ λͺ¨λΈμ μ΄μ©νκ³ λͺ¨λΈ μ‘°ν κΈ°λ₯μ μ΄μ©ν΄ κ°λ¨νκ² μν λͺ©λ‘μ μ‘°ννλλ‘ νλ€. λ€λ§ μμ§ νλ‘ νΈμ μ°κ²°νλ λ°©λ²μ μ°Ύμ§λ λͺ»ν΄μ ui μμμ λͺ©λ‘μ΄ λ³΄μ΄λ κ²μ΄ μλλΌ UIλ₯Ό μ μ©νμ§ μμ HTML κΈ°λ³Έ UIμ λ΄μ©λ§ 보μ΄κ³ , ν΄λΉ λ΄μ©μ ν΄λ¦νλ©΄ μλ‘μ΄ νμ΄μ§(μΆν μν μμΈνμ΄μ§)λ‘ μ΄λνλ κ²κΉμ§ μμ±νλ€. μμ§ λΆμ‘±ν μ μ΄ μμ΄μ μ½λλ₯Ό νλ‘μ νΈ μμ λ¨μ λ°λ‘ μ¬λ¦¬μ§ μκ³ ν μ€νΈ ν΄λμ git ..
μ§λ μ£Όμ μ²μ μκΈ°κ° λμ¨ μ΄ν μ€λλΆν° 'κ³ μμ΄μ μ± μ' νλ‘μ νΈμ μ°Έμ¬νκ² λμλ€. λλ΅μ μΈ νλ‘μ νΈ κ°μλ μ± μ μν μμ±μ μ 곡νλ μΉμ¬μ΄νΈ μ μμΌλ‘, μ΄ νλ‘μ νΈμμ λ°±μλ κ°λ°μλ‘ μ°Έμ¬νκ² λμλ€. μΈμ΄λ μ₯κ³ (Django)λ₯Ό μ¬μ©ν μμ . μ₯κ³ λ‘λ μ²μ κ°λ°μ ν΄λ³΄λ κ²μ΄λΌ μμΌλ‘ λ§μ 곡λΆκ° νμν κ² κ°λ€. μ€κ°λΆν° μ°Έμ¬νκ² λ κ²μ΄λΌ μΌλ¨ λ©°μΉ κ°μ 곡λΆμ νλ‘μ νΈ νμ μ νμ°κ³ κ·Έ λ€μμΌλ‘λ μν μμ± κΈ°λ₯λΆν° κ°λ°μ μμν μμ μ΄λ€. μ€λμ νμμ μ²μ μ°Έμνκ³ κ°λ¨ν μΈμ¬μ μμΌλ‘μ μΌμ μ 곡μ νλ€. νλ‘μ νΈ μΉ΄ν κ³ λ¦¬μλ νλ‘μ νΈ μΌμ§μ²λΌ λ¨κΈ°κ³ 리뷰ν λ§ ν κΈ°λ₯λ€μ λ°λ‘ κΈμ μμ±ν νμ λ§ν¬νλ μμΌλ‘ μ΄μ μμ μ΄λ€.