Study Anything π§
μν μμ± (2) - μν μ°κ³ μ‘°ννκΈ° λ³Έλ¬Έ
μν μμ± (2) - μν μ°κ³ μ‘°ννκΈ°
μ 2022. 1. 12. 20:27μν μμ± ννΈμ 첫λ²μ§Έ λ¨κ³μμ μ₯κ³ λͺ¨λΈλ‘ μν DBλ₯Ό λ§λ ν
κ·Έ DB μμ μνλ€μ μΉνμ΄μ§μμ μ‘°ννλ κΈ°λ₯κΉμ§ ꡬννλ€.
μ΄λ²μ κ·Έ λ€μ λ¨κ³λ‘ μμ±ν μνμ DBμ λ±λ‘νλλ‘ νλ κΈ°λ₯μ ꡬννλ€.
μΉνμ΄μ§μμ μνμ μ΄ ν κ·Έ λ΄μ©μ μν DBμ λ£κ³ μ 체 λͺ©λ‘μΌλ‘ μ‘°ννλ κΈ°λ₯μ΄λ€.
(1) μν λͺ©λ‘μ μ‘°ννλ νμ΄μ§μ κΈμ°κΈ° νμ΄μ§λ‘ μ΄λν μ μλ μμλ₯Ό μΆκ°νλ€.
νμΌ > templates/review/list.html
...
<a href="/review/write/">κΈμ°κΈ°</a>
...
(2) urls.py νμΌμ write νμ΄μ§μ κ΄λ ¨λ λ΄μ©μ μΆκ°νλ€.
νμΌ > review/urls.py
urlpatterns = [
...
path('write/', views.write, name='write'),
...
]
urls.py νμΌμ ν΄λΉ λ΄μ©μ μΆκ°ν¨μΌλ‘μ¨ 'http://κΈ°λ³Έμ£Όμ/review/write' μ£Όμκ° μμ²λμμ λ,
views.py νμΌμ write ν¨μλ₯Ό νΈμΆνκ² λλ€.
(3) views.py νμΌμ write ν¨μλ₯Ό μΆκ°νλ€.
νμΌ > review/views.py
def write(request):
user = User.objects.get(userId='002')
context = {'user':user}
if request.method == 'POST':
Review.objects.create(
userId = user,
bookId = request.POST['bid'],
reviewId = request.POST['rid'],
reviewTxt = request.POST['review']
)
return redirect('list')
return render(request, 'review/write.html', context)
url μ΄ νΈμΆλλ©΄ views.py νμΌμ write ν¨μκ° νΈμΆλλ€.
κ·ΈλΌ λ¨Όμ κΈμ μμ±ν μ μ κ° λꡬμΈμ§ μ 보λ₯Ό μ»μ΄μ user λ³μμ μ μ₯νκ³ ,
(μ΄λ λ‘κ·ΈμΈ κΈ°λ₯κ³Ό μ°κ²°λμ΄μΌ κ°λ₯ν λΆλΆμ΄λ―λ‘ μ§κΈμ μμλ‘ μ μ ν λͺ μ μ§μ νλ€.)
κΈμ°κΈ° νμ΄μ§μμ μμ±ν λ΄μ©μΌλ‘ μν DBμ λ°μ΄ν°λ₯Ό μΆκ°ν ν μ 체 λͺ©λ‘μ 보λ list url μ νΈμΆνλ€.
μ΄ λ, 맨 μ²μμ κΈμ°κΈ°μ url μ μμ²νμ λλ μλ¬΄λ° μ λ³΄κ° μκΈ° λλ¬Έμ (μμ±ν λ΄μ©μ΄ μκΈ° λλ¬Έμ)
쑰건문μ ν΅ν΄ μμ²ν λ©μλκ° POST μΈμ§λ₯Ό νλ³νλλ‘ νλ€.
λ§μ½ λ΄μ©μ΄ μλ€λ©΄ μ μ μ λ³΄λ§ κ°μ§κ³ write.html λ₯Ό λμ΄λ€.
(4) templates ν΄λμ write.html νμΌμ μμ±νλ€.
νμΌ > templates/review/write.html
...
<form action="{% url 'write' %}" method="POST">
{% csrf_token %}
<div>
uid: {{ user.userName }}<br>
bookId: <input type="text" name="bid"/><br>
reviewId: <input type="text" name="rid"/><br>
μν λ΄μ© <br>
<textarea name="review", rows="10", cols="40"></textarea><br>
<button type="submit">λ±λ‘</button>
</div>
</form>
...
write.html μ΄ λμμ§λ©΄ μμλ€μ ν΅ν΄ μνDBμ λ°μ΄ν°λ₯Ό μΆκ°νκΈ° μν΄ νμν μμλ€κ³Ό μν λ΄μ©μ μ λ ₯ν μ μκ³ ,
(μ΅μ’ μ μΌλ‘λ userId, bookId, reviewId κ° μλμΌλ‘ μ±μμ§λλ‘ κ΅¬νν μμ μ΄λ€.)
textarea νκ·Έμ μν λ΄μ©μ μμ±ν ν λ±λ‘ λ²νΌμ λλ₯΄λ©΄
μν λ°μ΄ν°λ₯Ό κ°μ§κ³ write url μ λ€μ νΈμΆμμΌ views.py νμΌμ write ν¨μλ‘ μ΄λν΄ λ°μ΄ν°λ₯Ό μ μ₯νλ€.
μ΄ λ {% csrf_token %} λΆλΆμ CSRF 곡격μ λ§κΈ° μν κ²μΌλ‘,
csrf_token νκ·Έλ₯Ό μΆκ°ν¨μΌλ‘μ¨ μ°λ¦¬ μ¬μ΄νΈκ° μλ λ€λ₯Έ μ¬μ΄νΈμμ μμ²μ 보λ΄λ©΄ μ€λ₯ νμ΄μ§λ₯Ό λμ°λ©° κ±°λΆνλ€.
(5) μ€ν νλ©΄
'νλ‘μ νΈ > [Web] μν μμ± μ¬μ΄νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘ νΈμ μ°κ²°νκΈ° (2) - Axios νμ© (0) | 2022.01.25 |
---|---|
νλ‘ νΈμ μ°κ²°νκΈ° (1) - μ₯κ³ /리μ‘νΈ μ°λ (0) | 2022.01.18 |
μν μμ± (3) - μν μμΈλ³΄κΈ° (0) | 2022.01.14 |
μν μμ± (1) - μν DB λ§λ€κ³ λͺ©λ‘ μ‘°ννκΈ° (0) | 2022.01.10 |
νλ‘μ νΈ μ°Έμ¬ μμ (0) | 2022.01.03 |