Django 유효성 검증
장고에서 유효성을 검증하는 방법은 2가지가 있습니다.
1. Field를 정의할 때 필요한 옵션 인자로 주기
2. 따로 validator를 추가하기
내장 Field 옵션을 사용하여 Field를 정의할 때 유효성 검증하기
Field 는 두가지 종류가 있는데 Model Field 와 Form Field 입니다.
첫번째로 우선 Model Field에서 유효성 검증을 하는 방법을 알아보겠습니다.
장고에서 Model Field에 유효성 검증을 방법은 models.py 파일에서 각각의 필드마다 유효성 검증을 추가해보면 됩니다.
# models.py
class Post(models.Model):
title = models.CharField(max_length=50)
위와 같은 코드가 작성되어 있다고 할때, title 값이 만약 중복되지 않기를 바란다면 unique 옵션 인자를 추가해주면 됩니다.
unique 옵션은 기본적으론 False로 설정되어 있지만, True로 설정할 경우 데이터베이스에서 같은 형식의 데이터를 저장할 수 없게 됩니다. 즉 여기선 같은 제목을 가진 Post를 추가할 수 없게 되는 것 입니다.
# models.py
class Post(models.Model):
title = models.CharField(max_length=50, unique=True)
이렇게 모델을 수정했다면 이제 views.py 파일에 가서 유효성 검증을 통과 했을때만 데이터를 받아서 저장할 수 있도록 따로 설정을 해줘야 합니다.
# views.py
def post_create(request):
if request.method == 'POST':
post_form = PostForm(request.POST)
if post_form.is_valid():
new_post = post_form.save()
return redirect('post-detail', post_id=new_post.id)
else:
post_form = PostForm()
return render(request, 'posts/post_form.html', {'form': post_form})
위처럼 코드를 작성했을 때, 5번째 줄 코드에 있는 if post_form.is_valid(): 가 유효성을 검증하는 부분입니다.
여기 나와있는 is_valid 같은 경우에는 post_form에 있는 데이터의 유효성을 검증해주는 함수입니다.
위 처럼 작성할 경우 5번째줄에서 유효성을 검증한 후, 만약 통과한다면 데이터를 저장하고 세부내용을 보여주는 페이지로 이동시켜주고, 만약 유효성이 검증에서 통과하지 못할 경우에는 다시 입력 페이지인 post_form으로 돌아가게 됩니다.
이때 에러가 발생할 경우 나오는 에러 메시지 또한 바꿔줄 수 있습니다.
# models.py
class Post(models.Model):
title = models.CharField(max_length=50, unique=True, error_message{'unique': '이미 존재하는 제목 입니다.'})
위 코드와 같이 error_meaage 에 옵션 인자를 넣어주고, 그 유효성 검증에 통과하지 못했을 경우에 나올 메세지를 적어주면 됩니다.
'Study > Django' 카테고리의 다른 글
Django Validator / 장고 유효성 검증 / Form에서 유효성 검증하기 (0) | 2021.12.10 |
---|---|
Django Validator / 장고 유효성 검증 / validator 추가하기 (0) | 2021.12.10 |
Django의 CSRF 방지 / CSRF / Cross-Site Request Forgery (0) | 2021.12.09 |
Django traling slash / 장고 트레일링 슬래시 (0) | 2021.12.09 |
Django Model Form / 장고 모델 폼 / forms.ModelForm (0) | 2021.12.08 |