Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 프로그래머스
- 인천남중
- texttospeech
- intell
- 노트북덮개
- 타코트론
- jaypark.dating
- 개발자회고
- 인하멘토링
- 놀이동산의슈퍼컴퓨터를작동시켜라
- 한빛미디어
- tacotron
- 우분투비트확인
- 2019회고
- 서버로그
- 나는리뷰어다
- 프로그라피
- 개발자를위한파이썬
- Xangle
- 봉사활동
- 쇠막대기
- machinelearning
- 심플소프트웨어
- graphicdriver
- 신영준
- 결과를얻는법
- CrossAngle
- 로그남기기
- 서구동구예비군훈련장
- 인하대학교
Archives
- Today
- Total
jc.jang
3강 Form 본문
주제
-
장고의 Form의 기본 메커니즘과 활용하는 다양한 방법에 대해 알아보자.
노트
-
Form이란?
-
장고를 더욱 장고스럽게 만들어주는 주옥같은 Feature
-
주요 역할
- 입력 HTML 생성
- 입력폼 값에 대한 유효성 검증 및 값 변환
- 검증을 통과한 값들을 dict형태로 제공
-
Form 처리 방식
- 하나의 URL에서 2가지 역할을 모두 수행
- 빈 폼을 보여주는 역할과
- 폼을 통해 입력된 값을 검증하고 저장하는 역할
- myapp/models.py
from django.db import models
from django.core.validators import MinLengthValidator
from django.shortcuts import reverse
class Post(models.Model):
title = models.CharField(max_length=100, validators=[MinLengthValidator(3)])
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def get_absolute_url(self):
return reverse("myapp:post_detail", args=[self.pk])
def __str__(self):
return self.title
- validator에 메소드명을 추가하여 유효성 검사가 가능하다.
- myapp/forms.py
def post_new(request):
form_cls = PostForm
template_name = 'myapp/post_form.html'
success_url = '/'
if request.method == 'POST':
form = form_cls(request.POST, request.FILES)
if form.is_valid():
post = form.save()
return redirect(post)
else:
form = form_cls()
return render(request, template_name, {
'form': form,
})
- get 메소드로 요청 시 입력 폼을 반환해주고
- post 메소드로 요청 시 입력 받은 데이터를 유효성 검사 후 저장한다.
요약
- 장고는 모델을 거의 필수로 생각하는 것 같다. 튜토리얼에서도 나오니까...
- 이에 맞게 Form과 ModelForm은 입력폼을 쉽게 구현할 수 있도록 도와주는 기능이다.
'Django > Django - Form,ModelForm' 카테고리의 다른 글
6강 Form Validation (0) | 2019.09.25 |
---|---|
5강 ModelForm (0) | 2019.09.24 |
4강 CSRF (0) | 2019.09.24 |
2강 HttpRequest와 HttpResponse (0) | 2019.09.17 |
1강 HTML Form (0) | 2019.09.17 |
Comments