1 2 3 4 5 6 7 8 9 | class CharacterForm(ModelForm): class Meta: model = Character fields = ( 'user', 'name', 'type', 'gender' ) | cs |
1 2 3 4 5 | def index(request): ctx = {} if request.method == "GET": form = CharacterForm() ctx.update({ "form" : form }) | cs |
2) 폼을 통해 입력 받은 데이터를 View에서 처리하여 데이터베이스에 저장한다.
(웹사이트에서 폼을 통해 데이터가 전송된 상황) POST 요청일때, request로부터 데이터를 가져와 폼 인스턴스를 만든다.
- *폼은 데이터가 입력된 폼 인스턴스에 대한 유효성 검사(데이터베이스 필드조건 부합)를 할 수 있다.
- Partner 클래스에 user 필드를 제외한 name, contact, address, description 필드에만 데이터를 입력 받은 상태이다.
- 인스턴스는 비어있는 필드가 있으면 데이터베이스에 저장하지 않는 경우가 발생한다.
- 아니면 저장하기 전에 직접 필드에 데이터를 입력하여 최종 저장시킨다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def index(request): ctx = {} if request.method == "GET": form = CharacterForm() ctx.update({ "form" : form }) elif request.method == "POST": form = CharacterForm(request.POST) if form.is_valid(): character = form.save(commit=False) character.user = request.user character.save() return redirect("/character/") else: ctx.update({ "form" : form }) | cs |
2-1) 데이터를 저장하므로 POST 방식을 사용하고, 데이터를 입력 받은 폼을 변수로 지정한다.
2-2) form.is_valid()를 통해 입력된 데이터의 유효성 검사를 한다. 올바르지 않으면 재작성한다.
2-3) user 값은 직접 입력하는 것이 아니므로 별도로 채워서 최종 저장을 한다.
'코딩 연습 > Django' 카테고리의 다른 글
쿼리 연습하기 (0) | 2018.12.01 |
---|---|
모델 폼에서 입력한 데이터를 다시 불러 수정하기 (0) | 2018.12.01 |
OneToOneField 활용 (1대1 관계) (0) | 2018.11.29 |
View에서 authenticate 함수 활용하기 (회원 인증 받기) (0) | 2018.11.28 |
내장된 User 모델 활용하기(회원 등록 받기) (0) | 2018.11.28 |