Study Anything π§
μν μμ± (3) - μν μμΈλ³΄κΈ° λ³Έλ¬Έ
μν μμ± (3) - μν μμΈλ³΄κΈ°
μ 2022. 1. 14. 00:05μ§κΈκΉμ§ μν λͺ©λ‘λ€μ 리μ€νΈλ‘ μ 체 μ‘°ννλ νμ΄μ§μ κΈμ°κΈ° νμ΄μ§λ₯Ό ꡬννλ€.
μ΄λ²μλ μν λͺ©λ‘μμ νλλ₯Ό μ ννμ λ ν΄λΉνλ μνμ μμΈ νμ΄μ§λ₯Ό ꡬννλ €κ³ νλ€.
(1) list νμΌ λ³΄κΈ°
νμΌ > templates/review/list.html
<li><a href="/review/detail/{{ review.reviewId }}/">
<div>
... <!--μν λͺ©λ‘ μ‘°ν-->
</div>
</a></li>
DBμμ μν λͺ©λ‘μ λ°μμμ νμ΄μ§μ λμ°λ list.html μ½λ μ€ μΌλΆμ΄λ€.
κ°κ°μ μνμ <a> νκ·Έλ‘ κ°μΈ ν΄λΉ λ΄μ©μ μ ννλ©΄ μνμ μμΈ νμ΄μ§λ‘ μ΄λνλλ‘ κ΅¬ννλ €κ³ νλ€.
ν΄λΉ μμΈνμ΄μ§μ url μ "http://κΈ°λ³Έμ£Όμ/review/detail/μνId" λ‘ μ€μ νλ€.
(2) urls.py νμΌ μμ
νμΌ > review/urls.py
urlpatterns = [
...
path('detail/<int:reviewId>/', views.detail, name='detail'),
...
]
url νμΌμ μμΈνμ΄μ§ url μ μΆκ°ν΄μ£Όμλ€. detail/ λ€μ λΆλΆμ΄ μνId μ΄λ―λ‘ <int:reviewId> λΌκ³ νκΈ°νλ€.
(* reviewId μ μλ£νμ intνμ΄λ€. μ΄μ κΈ-λͺ¨λΈ μμ± λΆλΆ- μ°Έκ³ )
(3) views.py νμΌ μμ - ν¨μ μμ±
νμΌ > review/views.py
def detail(request, reviewId):
# μ νν 리뷰 μΆλ ₯
review = Review.objects.get(reviewId=reviewId)
user = User.objects.get(userId=review.userId)
context = {'review': review, 'user': user}
return render(request, 'review/detail.html', context)
urls.py μμ reviewId λ₯Ό λ³μλ‘ λ°μκΈ° λλ¬Έμ κΈ°μ‘΄κ³Ό λ€λ₯΄κ² views.py μ ν¨μμ reviewId 맀κ°λ³μκ° μΆκ°λμλ€.
ν¨μλ‘ λ°μ reviewId λ₯Ό ν΅ν΄ μν ν μ΄λΈμμ ν΄λΉ μνμ κ°μ Έμ μλ‘μ΄ λ³μμ λ£κ³ ,
μν DBμμ μ μ DBμ userIdλ₯Ό μΈλν€(FK)λ‘ μ¬μ©νλ―λ‘ μ μ DBμμλ ν΄λΉ μ μ μ μ 보λ₯Ό κ°μ Έμ¨λ€.
κ·Έλ° λ€μ context μ μνκ³Ό (μνμ μμ±ν) μ μ λ°μ΄ν°λ₯Ό λ£κ³ μν μμΈνμ΄μ§λ₯Ό ꡬνν html νμΌμ λ겨μ€λ€.
(4) detail.html μμ±
νμΌ > templates/review/detail.html
{% if review %}
<h4>μ±
ISBN: {{ review.bookId }}</h4>
<h4>μμ±μ: {{ user.userName }}</h4>
<h4>μνId: {{ review.reviewId }}</h4>
<div>
{{ review.reviewTxt }}
</div>
{% else %}
<p>μνμ΄ μμ΅λλ€.</p>
{% endif %}
λ겨λ°μ λ°μ΄ν°λ₯Ό ν΅ν΄ html μμ μν λ΄μ©μ λμ΄λ€.
νΉμ λ겨λ°μ λ°μ΄ν°(μν)κ° μμ κ²½μ°λ₯Ό λλΉν΄ 쑰건문μ μΆκ°νκ³ ,
λ°μ΄ν°κ° μλ€λ©΄ ν΄λΉ λ΄μ©λ€μ νμ΄μ§μ λμ°λλ‘ νλ€.
(5) κ²°κ³Όνλ©΄
μμ κ³Όμ μ κ±°μΉλ©΄ λ€μμ κ²°κ³Ό νμ΄μ§λ₯Ό μ»μ μ μλ€.
μ§κΈκΉμ§ μν λͺ©λ‘ μ‘°ν, κΈμ°κΈ° ν μν DBμ λ°μ΄ν° μΆκ°νκΈ°, μν μμΈλ³΄κΈ° μ κΈ°λ₯λ€μ ꡬνν΄λ³΄μλ€.
μΈ κΈ°λ₯μ΄ λͺ¨λ 곡ν΅μ μΌλ‘ urls.py, views.py, (μ΄λ¦).html μ νμΌμ μμ νκ³ μμ±νλ©΄μ ꡬνλλ κ²μ μ μ μμλ€.
μ₯κ³ μ μ₯μ μ΄ κ°νΈνκ² νμ΄μ§λ₯Ό ꡬννλλ‘ νλ κ²μ΄λΌκ³ νλλ° μ λ§λ‘ κ°λ¨νκ² μ¬λ¬ κΈ°λ₯μ ꡬνν μ μμλ€.
λ€λ§ μ°λ¦¬ νλ‘μ νΈλ νλ‘ νΈμλμ λ°±μλκ° λλ μ Έμκ³ , νλ‘ νΈλ 리μ‘νΈ(React)λ‘ κ΅¬ννκΈ° λλ¬Έμ
λ€μ λ¨κ³λ‘λ μ₯κ³ λ‘ κ΅¬νν μ΄ κΈ°λ₯λ€κ³Ό 리μ‘νΈλ₯Ό μ°κ²°ν μμ μ΄λ€.
μ₯κ³ λ₯Ό μ΄λ² νλ‘μ νΈλ‘ μ²μ μ νλλ° μ’μ μλ£λ€μ΄ λ§μμ μ°Έκ³ νλ©΄μ μ μ¬μ©ν΄λ³Έ κ² κ°λ€.
μμΌλ‘ κ³μ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ λ λ€μνκ² μ ν΄λ³Ό μ μμΌλ©΄ μ’κ² λ€.
'νλ‘μ νΈ > [Web] μν μμ± μ¬μ΄νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘ νΈμ μ°κ²°νκΈ° (2) - Axios νμ© (0) | 2022.01.25 |
---|---|
νλ‘ νΈμ μ°κ²°νκΈ° (1) - μ₯κ³ /리μ‘νΈ μ°λ (0) | 2022.01.18 |
μν μμ± (2) - μν μ°κ³ μ‘°ννκΈ° (0) | 2022.01.12 |
μν μμ± (1) - μν DB λ§λ€κ³ λͺ©λ‘ μ‘°ννκΈ° (0) | 2022.01.10 |
νλ‘μ νΈ μ°Έμ¬ μμ (0) | 2022.01.03 |