기존에 작성된 views.py의 create 메소드에
GET으로 요청이 들어왔을 때와
form을 통해 POST로 요청이 들어왔을 때를 구분해서 처리하도록 하겠습니다.
이렇게 처리해주면 url mapping을 간결하게 처리할 수 있습니다.
#second/views.py
def create(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
new_item = form.save()
return HttpResponseRedirect('/second/list/')
form = PostForm()
return render(request, 'second/create.html', {'form':form})
만약 전달받은 방식이 POST방식이면
validation check를 한뒤에
form data를 저장합니다.
그뒤에 list로 갑니다.
list는 Post 클래스로 만든 model들의 요소들을
화면에 차례대로 프린트 해주도록 해줬기 때문에
form data로 넘겨준 정보가 화면에 표시됩니다.
#second/create.html
<form action="{% url 'create' %}" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<button type="submit">제출</button>
</form>
create에서 유저로부터 form data를 입력받습니다. 그리고 post방식으로 create에게 넘깁니다.
다시 views.py를 보면서 로직을 하나하나 따져보면 됩니다.