Django를 이용하여 게시판을 만드는 과정을 따라가보자.
이 글은 아래 Part 4을 바탕으로 이어지니 참고하자
https://edder773.tistory.com/94
지난 CRUD를 이용하여 게시판의 기본 구조까지 만들었다.
이제 여기서 조금 더 변형해서 더 간단하게 Form을 활용하여 내용을 수정해보자
Django Form
- 지금 django를 이용하여 만든 게시판은 들어오는 모든 요청을 수용
- But 실제로 서버 운영시에는 비정상 or 악의적인 내용을 거를 필요가 있음
- 그렇기에 우리는 유효성 검증을 거쳐야하고, django의 Form을 이용하면 작업량과 반복 코드를 줄여 더 쉽게 유효성 검증을 진행 할 수 있게 만들 수 있음
특징
- Form은 django의 유효성 검사 중 하나로 외부 공격 및 데이터 손상에 대한 방어 수단으로 사용 가능
- django는 Form과 관련된 유효성 검사를 단순화 · 자동화할 수 있는 기능을 제공 해 더 빠르게 코드를 작성 가능
- Form과 관련해서 렌더링을 위한 데이터 준비 및 재구성, 데이터 HTML forms 생성, 받은 데이터 수신 및 처리 기능을 django가 제공함
실습
주요한 내용은 직접 만들면서 따라가보자.
Form Class
Model Class를 사용하는 것과 비슷하게 Form class를 사용해보자. Model과 마찬가지로 상속을 통해 선언 받는다는 특징을 갖고있다.
가장 먼저 앱 폴더에 forms. py 폴더를 생성후, Form을 만들고 아래와 같이 내용을 추가해보자
from django import forms
class ArticleForm(forms.Form): #내가 만든 앱 이름은 articles니까 ArticleForm으로 만들었음
title = forms.CharField(max_length=15)
content = forms.CharField(widget=forms.Textarea)
앞서 model의 content는 textfield로 작성했지만, form에는 textfield가 존재하지 않아 charfield로 작성해주었다.
textfield와 비슷하게 작동하게 만들기 위해 widget 기능을 사용해 textarea를 만들어줘 textfield와 비슷하게 구성하였다.
이제 Class까지 만들었으면 View에서 내용을 form을 활용할 수 있게 수정해보자
ArticleForm을 사용하기 위해서 먼저 import 해주고, Create에서 활용 할 수 있게 content로 해서 내용을 넣자.
여기까지 했으면 기존 create.html에 들어가서 form을 사용할 수 있게 수정해주어야한다.
기존 ↓
수정 ↓
많은 양이 한번에 줄어 든 것을 확인할 수 있다. 이후 서버를 동작해서 글 쓰기 버튼을 눌러보면
정상적으로 출력되는 것을 볼 수 있다.
Form의 렌더링
위 과정에서 create에 {{form.as_p}}로 사용해서 출력한 것처럼 렌더링 옵션을 지정해 출력할 수 있다.
- as_p : 각 필드가 p 태그로 감싸져서 렌더링
- as_ul : 각 필드가 li 태그로 감싸져서 렌더링
- as_table : 각 필드가 tr 태그로 감싸져서 렌더링
다음 포스팅은 ModelForm 사용으로 이어집니다~
'개발 > Django' 카테고리의 다른 글
[Django] 게시판 만들어보기 - Part 7 (게시판에 이미지 넣기) (0) | 2023.03.26 |
---|---|
[Django] 게시판 만들어보기 - Part 6 (ModelForm을 활용한 변형) (0) | 2023.03.26 |
[Django] 게시판 만들어보기 - Part 4 (삭제 구현하기) (0) | 2023.03.22 |
[Django] 게시판 만들어보기 - Part 3 (수정하기 만들기) (0) | 2023.03.22 |
[Django] 게시판 만들어보기 - Part 2 (상세 페이지 페이지 만들기) (0) | 2023.03.22 |
댓글