220125 TIL

CoderS·2022년 1월 25일
0

TIL DAY 164

오늘 배운 일

✔️ Django 웹 개발

1. Validator로 유효성 검증하기

만약 데이터가 보다 복잡한 유효성을 요구한다면 어떻게 해야 할까?

이 때 사용할 수 있는게 바로 Validator 이다.

Validator

  • 임의의 값을 받아서 내부의 기준을 충족하지 않으면 ValidationError 를 발생시키는 함수이다.

  • 하나의 필드에 종속되지 않고 여러 필드에서 사용할 수 있으며 django 에서 기본적으로 제공하는 Built-In Validator 를 사용하거나 필요한다면 직접 Validator 를 구현할 수 있다.

    출처 : 코드잇

그럼 먼저 django 에서 제공하는 Validator 를 사용해보겠다.

Built-In Validator 는 여러 종류가 있는데 우리가 구현하는 유효성 중 하나인 내용은 최소 10글자 이상이여야 한다는 유효성 구현을 해보겠다.

그럼 한 번 해보겠다.

브라우저로 이동해서...

google 에 django built-in validators 를 검색해본다.

그리고 장고의 공식문서로 들어가서...

https://docs.djangoproject.com/en/4.0/ref/validators/

맨 첨으로 나오는 사이트를 클릭해준다.

사이트 아래로 내리다보면 이런 식으로 Built-in validators 라는게 있다.

계속해서 내래보면 다양한 종류의 validators 를 확인할 수 있다.

우리가 원하는 것은 길이의 관한 것이니까...

MinLengthValidator 를 사용하면 최소 길이에 대한 limit_value 와 유효성 검증을 실패했을 때 보여줄 에러 메시지를 적어줄 수 있다.

이거를 사용할려면 import 를 해야하는데 문서를 올리다보면...

django.core.validators 이 것을 import 해서 사용하라고 되어있다.

그러면 한 번 우리 프로젝트에 적용해보자!

models.py 에서 다음과 같이 코드를 작성해보자!

models.py

이 Validator 를 사용할건데 각각의 필드 안에 Validator 라는 항목이 있다.

여기에 적용할 Validator 를 적어주면 되는데 한 번 해보겠다.

밑에 있는 코드를 참고해보자!

이렇게 MinLengthValidator 를 사용해서 최소 10글자 그리고 에러 메시지를 인자로 넣었다.

그러면 이제 서버를 실행해서 확인해서...

http://127.0.0.1:8000/posts/new/

한 번 유효성 검사를 해보자!

이런 식으로 우리가 설정해둔 에러 메시지가 잘 출력된다.

자 그러면 이제 내용에 # 과 @ 를 쓸 수 없게 하는 유효성도 추가해보겠다.

이 부분은 직접 Validator 를 만들면서 해결해보도록 하겠다.

일단 파일을 하나 더 만들어준다.

posts 에서 새로운 파일을 생성하고 이름을 validators.py 라고 지어준다.

validator 는 인자로 넘어오는 value 를 검증하는 로직을 수행하다가 유효성 검증에 실패했을 때 ValidationError 를 발생시켜준다.

그러면 django 에서 제공하는 ValidationError 객체를 가져와보도록 하겠다.

다음과 같이 코드를 작성해준다.

validators.py

이 ValidationError 는 django 에서 제공하는 에러 중에 하나로 유효성 검증을 실패했을 때 의미하는 에러이다.

이 ValidationError 를 발생시키게 되면 django 내부적으로 에러인데 유효성 검증에 실패했구나 이런 식으로 이해하고 그거에 맞는 처리 로직을 수행하게 된다.

그리고 함수를 하나 만들어준다.

if 문을 사용해서 @ 이나 # 이 value 에 있는 경우에는 에러를 발생시키는 raise 문을 써서 가져온 ValidationError 를 내도록 하겠다.

그리고 두 번째 인자로 code 는 해서 에러코드를 지정해준다.

이 symbol-err 같은 경우에는 뭐 여러 가지 에러들 중에 이 에러를 구분할 수 있도록 임의의 코드를 부여해 준 거라고 생각하면 된다.

그러면 모델로 가서 위에 작성한 Validator 를 가져와본다.

그리고 내용 부분에 다음과 같이 코드를 작성해준다.

models.py

이제 그럼 잘 작동하는지 확인해보자!

다시 웹 페이지로 돌아가서 @ 과 # 를 본문에 적어서 전송하면...

설정한 에러 메시지가 잘 나타난다.

끝으로 :

  • 오늘은 Validator 로 유효성 검증을 해보는 날이었다.
  • 직접 사이트에서 import 해서 검증을 할 수 있고 아니면 만들어서 사용할 수 있으니 한 번 활용하면 좋겠다.
profile
하루를 의미있게 살자!

0개의 댓글