Django 게시판에 스크립트로 질문 100개 자동 생성
Django 게시판에 스크립트로 질문 100개 자동 생성하기
장고(Django) 프로젝트에서 테스트용 게시글(질문)을 대량으로 자동 등록하고 싶을 때가 있습니다. 예를 들어, 페이징 기능이나 UI 디자인을 확인하고자 할 때 실제 데이터를 반복해서 입력하는 것은 비효율적입니다. 이 글에서는 장고의 manage.py shell을 활용하여 질문 100개를 자동 등록하는 방법을 소개합니다.
1. 모델 구조 확인
기본적으로 pybo.models.Question 모델은 다음과 같은 구조를 가집니다.
class Question(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author_question')
subject = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
modify_date = models.DateTimeField(null=True, blank=True)
voter = models.ManyToManyField(User, related_name='voter_question')
이 모델에서는 author 필드가 반드시 필요하며, 이는 django.contrib.auth.models.User 모델과 연결되어 있습니다. 따라서 질문을 저장할 때 작성자 정보도 함께 지정해줘야 합니다.
2. 쉘로 진입하기
CloudShell 혹은 터미널에서 다음 명령으로 Django 쉘을 실행합니다.
python manage.py shell
3. 사용자 객체 불러오기
관리자(superuser)나 등록된 사용자 중 하나를 가져옵니다. 여기서는 사용자 이름이 admin인 경우를 예로 듭니다.
from django.contrib.auth.models import User
author = User.objects.get(username='admin')
만약 사용자 이름이 다르다면 'admin'을 해당 이름으로 바꾸세요.
등록된 사용자 목록은 User.objects.all()로 확인 가능합니다.
4. 질문 100개 자동 생성
이제 아래 코드를 입력하면 100개의 질문이 자동으로 생성됩니다.
from pybo.models import Question
from django.utils import timezone
for i in range(1, 101):
q = Question(
subject=f'테스트 질문입니다: {i:03}',
content=f'자동 등록된 질문 내용입니다. 번호: {i}',
create_date=timezone.now(),
author=author
)
q.save()
번호는 001 ~ 100까지 3자리 숫자로 포맷됩니다.
5. 결과 확인
웹 브라우저에서 게시판 목록 페이지로 이동하면 테스트용 질문 100개가 생성되어 있는 것을 확인할 수 있습니다. 이를 통해 페이징, 정렬, 검색 등의 기능을 실제 데이터로 실험해 볼 수 있습니다.
마무리
이 방식은 테스트 데이터가 필요한 상황에서 매우 유용합니다. 필요에 따라 100개보다 더 많은 데이터를 반복문으로 생성할 수 있으며, 내용, 작성일, 작성자 등을 다양하게 조합하여 품질 높은 테스트 환경을 만들 수 있습니다.
실제 운영 환경에서는 이러한 스크립트를 제거하거나, 별도의 테스트 데이터 관리 전략을 세우는 것이 좋습니다.