Django Form을 사용해 게시물을 입력하는 화면을 구현합니다.

사용자로 부터 어떤 정보를 입력받을지 생각하면서 코드를 작성하는 것이 좋습니다.

1. 기본 폼 생성하기

second 에 간단한 폼을 생성해보겠습니다.

#second/forms.py

from django import forms


class PostForm(forms.Form):  # django의 폼을 상속
    title = forms.CharField(label='제목', max_length=200)
    content = forms.CharField(label="내용", widget=forms.Textarea)

어떤 입력을 받을 것인지 필드를 정해줍니다.
title에는 문자열을 받을 것이고
content에도 문자열을 받을 것인데
옵션을 보면 content에는 widget에 Textarea를 지정해줬습니다.

각 필드의 속성을 달리 정해준 것입니다.
widget은 디스플레이에 관여합니다.
화면에 보여질 입력 칸을 결정하는 것인데 따로 지정하지 않으면 default로 지정된 모양으로 표시됩니다.

자세한 내용은
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Forms
을 참고하면 됩니다.

이제 form을 사용하도록 views.py에 로직을 구현해줍니다.

#second/views.py

from .forms import PostForm

def create(request):
    form = PostForm()
    return render(request, 'second/create.html', {'form': form})

form이라는 instance를 만들어 'create.html'에 보내줍니다.

이제 create.html을 만들겠습니다.

#second/templates/second/create.html

<form action="/" method="post">
    {% csrf_token %}
    {{ form }}
    <button type="submit">제출</button>
</form>

action은 form으로 입력받은 데이터를 넘겨받는 url을 결정한다고 했습니다.

지금은 넘겨받는 주체를 구현하지 않을 것이기 때문에 일단 비어있는 url로 하겠습니다.

여기서 csrf_token이란 것이 있는데 일단 지금은 form으로 입력되는 정보에 발행되는 토큰이다 정도로 알고 있으면 됩니다.

이제 url을 연결해주겠습니다.

#second/urls.py

urlpatterns = [
    path('list/', views.list, name='list'),
    path('create/', views.create, name='create'), # 추가 
]

runserver를 한 뒤
http://127.0.0.1:8000/second/create/
로 접속하면 만들어준 form을 볼 수있습니다.