Django Form을 사용해 게시물을 입력하는 화면을 구현합니다.
사용자로 부터 어떤 정보를 입력받을지 생각하면서 코드를 작성하는 것이 좋습니다.
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을 볼 수있습니다.