Django 프론트& 백엔드 개발

유효성 검증을 뒤늦게 추가했을 경우 - Django 유효성 검증 로직 추가

Data Jun 2026. 1. 14. 22:59

Django에서는 입력 시점의 유효성 검증
이미 저장된 데이터의 유효성 점검
서로 다른 역할로 나누어 관리하는 것이 좋습니다.

  • validators.py → 입력값 검증 규칙
  • validate_data.py → 기존 데이터 점검/정리

이번 구조는 위의 두 가지로 나뉩니다.

 

1. validators.py – 입력 단계 유효성 검증

validators.py에는 필드 단위 유효성 규칙을 정의합니다.

from django.core.exceptions import ValidationError

def validate_symbols(value):
    if ('@' in value) or ('#' in value) or ('&' in value):
        raise ValidationError(
            '"@", "#", "&"는 포함될 수 없습니다.',
            code='symbol-err'
        )
  • 폼 제출 / 모델 저장 시 자동 실행
  • 잘못된 값은 저장 자체를 차단
  • Django의 ValidationError 메커니즘 활용

즉, 앞으로 들어오는 데이터를 막는 역할입니다.

 

2. validate_data.py – 기존 데이터 검증 모듈

validate_data.py는 이미 DB에 저장된 데이터를 대상으로
점검하거나 정리하기 위한 스크립트입니다.

from .models import Post

def validate_post():
    posts = Post.objects.all()

    for post in posts:
        if '&' in post.content:
            print(post.id, '번 글에 &가 있습니다.')
            post.content = post.content.replace('&', '')
            post.save()

유효성 규칙 추가 후 데이터 일괄 점검 후 수정 

 

3. Django Shell에서 실행

python manage.py shell
# Django 셀 실행 후

>> from posts.validate_data import validate_post
>?> validate_post()

이미 적재된 데이터는  validate_post() 함수를 기반으로 유효성 검사를 진행

 

4. 정리하면

구분 validators.py validate_date.py
대상 신규 입력 데이터 기존 DB 데이터
실행 시점 저장/폼 검증 시 수동 실행
목적 저장 차단 유효성 정검 및 정리