django 기본이해 정리
project.urls.py
from django.contrib import admin
from django.urls import path
from articles import views
urlpatterns = [
path('review/', views.review),
]
project를 시작하고 해당 project폴더의 urls.py에 사용자가 특정 url에 접속하면 실행시킬 함수 작성.
지금은 ~review/에 접속하면 views.py에 있는 review함수 실행.
(import로 articles app의 views.py를 가져옮)
articles.view.py
def review(request):
return render(request, 'review.html')
사용자에게 review.html을 보여주도록 하는 함수.
review.html
<form action="/create_review/" method="POST">
{% csrf_token %}
<label for="content">보낼메시지</label>
<input type="text" id="content" name="content" />
<input type="submit" />
</form>
form태그를 이용해서 POST 방식으로 /create_review/ 라는 url로 이동시킴.
(method를 POST로 정했고 submit type의 input이 트리거가 되기 때문)
이 때, text input박스를 "content" 라고 name을 달아서 보내게 된다.
project.urls.py
urlpatterns = [
path('review/', views.review),
path('create_review/', views.create_review),
]
create_review/로 이동하면 views의 create_review함수 실행
view.py
def review(request):
return render(request, 'review.html')
def create_review(request):
content = request.POST.get('content')
print(request.POST)
context = {
'content':content ,
}
return render(request, 'review_result.html', context)
POST방식으로 넘어온 데이터 중 'content'를 content라는 변수로 둔다. (review.html에서 'content'라고 name을 달아놔서 가능.)
그리고 print로 확인해주고,
context 라는 dictionary에 key: value로 지정해줌.
그리고 review_result.html로 보내면서 context도 같이 보내줌.
review.result.html
<h1>{{ content }}</h1>
여기서 content는 context의 key값인 'content'를 의미한다.
key값을 호출했기 때문에 그 value값인 content, 즉 form 태그 안의 text input에 입력했던 값이 보여지게 된다.
이건
view.py
def review(request):
return render(request, 'review.html')
def create_review(request):
content = request.POST.get('content')
print(request.POST)
context = {
'content':content ,
}
return render(request, 'review_result.html', content)
맨 마지막 줄 context를 content로 잘못 적었더니 생겼던 오류.
오탈자의 중요성을 다시 한 번 확인..!