#answer_create 별칭에 해당하는 URL 규칙
from django.urls import path
from . import views
app_name = 'pybo'
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
path('answer/create/<int:question_id>/', views.answer_create, name='answer_create'),
]
#뷰 함수
from django.shortcuts import render, get_object_or_404, redirect
from django.utils import timezone
from .models import Question
(... 생략 ...)
def answer_create(request, question_id):
question = get_object_or_404(Question, pk=question_id)
question.answer_set.create(content=request.POST.get('content'), create_date=timezone.now())
return redirect('pybo:detail', question_id=question.id)
'''
answer_create 함수의 매개변수 qustion_id 는 URL 매핑에 의해 그 값이 전달된다.
만약 http://locahost:8000/pybo/answer/create/2/ 라는 페이지를 요청하면
매개변수 question_id 에는 2 라는 값이 전달된다.
그리고 답변 등록 시 텍스트 창에 입력한 내용은 answer_create 함수의 첫번째 매개변수인
request 객체를 통해 읽을 수 있다. 즉, request.POST.get('content') 로 텍스트창에 입력한 내용을 읽을 수 있다.
request.POST.get('content') 는 POST 로 전송된 폼(form) 데이터 항목 중 content 값을 의미한다.
그리고 답변을 생성하기 위해 question.answer_set.create 를 사용하였다.
question.answer_set 은 질문의 답변을 의미한다.
'''
📖 참고 자료
템플릿 공부
https://velog.io/@jewon119/Django-%EA%B8%B0%EC%B4%88-Template-Language
[Django] 폼(Form) 복습필요 (0) | 2022.09.18 |
---|---|
[Django] 스태틱(static) 디렉터리, 스타일시트 등록하기 (0) | 2022.09.18 |
[Django] URL 별칭 (0) | 2022.09.16 |
[Django] 질문 목록 및 상세 페이지 만들기 (0) | 2022.09.16 |
[Django] 모델(Model) (15) | 2022.09.15 |