더미데이터 유효성 검증

Ethan·2024년 1월 18일
0

Dear

목록 보기
5/13

데이터 시딩을 통해 더미데이터를 추가했지만, 유효성이 관리되지 않는다. 따라서 본 포스팅은 <dear> 프로젝트에 추가된 더미데이터를 유효성 검증에 통과된 데이터로 변경하는 방법을 알아본다.

1. 더미데이터 확인

데이터 시딩을 통해 생성된 데이터 중, 유효성 검증에 통과하지 못한 데이터는 다음과 같다.

특수문자 &이 포함됨

이미지에는 보이지 않지만 수정일이 생성일보다 빠름


2. py 파일 및 함수 작성

수정일이 생성일보다 빠른 게시글을 찾아 수정일현재 시간으로 변경하고

내용에 &가 포함된 게시글을 찾아 &를 삭제하는 파이썬 파일을 작성한다.

파일 이름은 validate_data로 생성했다.

#posts > validate_data.py

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()
            
        if post.dt_modified < post.dt_created:
            print(post.id, "번 글의 수정일이 생성일보다 과거임")
            post.save()

2.1 각 코드의 의미

Post 모델을 불러온다.

from .models import Post

validate_post 이름의 함수를 작성한다.

def validate_post():

변수 postsPost 모델의 모든 데이터를 지정한다.

    posts = Post.objects.all()

posts에 담긴 데이터를 post 라는 이름으로 하나씩 불러온다.

    for post in posts:

만약 & 특수문자가 postcontent 필드에 있다면 해당 postid를 호출한다. 그리고 해당 postcontent 필드에서 & 로 대체한다. 이후 post를 저장한다.

        if "&" in post.content:
            print(post.id, "번 글에 &가 있음")
            post.content = post.content.replace("&", " ")
            post.save()

만약 postdt_modified 필드의 값이 de_created보다 낮다면, 해당 postid를 호출한다. 그리고 해당 post를 저장한다.

        if post.dt_modified < post.dt_created:
            print(post.id, "번 글의 수정일이 생성일보다 과거임")
            post.save()

(dt_modifiedauto_now 옵션을 True로 정의했기 때문에 저장하면 현재시간으로 변경된다.)


3. shell 환경에서 파일 사용

작성된 파일을 shell 환경에서 사용한다.

python manage.py shell

작성된 파일의 validate_post 함수를 불러온다.

from posts.validate_data import validate_post

불러온 함수를 사용한다.

validate_post()

3.1 콘솔 결과


3.2 서버 결과

& 특수문자가 모두 제거됨

수정일이 현재시간으로 변경됨

profile
글로 쓰면 머리 속에 정리가 되...나?

0개의 댓글

관련 채용 정보