장고 기초 이해도 테스트 오답 노트

찬민·2024년 9월 4일

TIL

목록 보기
48/62

이번에 장고 기초 이해도 테스트를 보았는데 정답이 아쉬웠던 질문들을 오답 노트를 통해 다시 복습해 보았다.

Django에서 settings.py 파일의 주요 역할:

settings.py 파일은 Django 프로젝트의 전반적인 설정을 관리하는 곳이다. 이 파일은 프로젝트의 환경 구성, 데이터베이스 설정, 타임존, 언어 설정, 미디어 및 정적 파일 경로, 어플리케이션 설치 여부 등을 포함한다. 그래서 settings.py는 Django 프로젝트의 핵심적인 설정 파일로, 프로젝트의 환경에 맞게 설정을 변경할 수 있도록 도와준다.

Django ORM이란 무엇이며, 왜 사용하는지 설명:

Django ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스 간의 데이터를 매핑해주는 도구다. 개발자는 SQL 쿼리를 직접 작성하지 않고, Python 객체로 데이터베이스 작업을 수행할 수 있다. ORM을 사용하면 코드가 더 직관적이며 데이터베이스 작업이 쉽게 유지 및 관리된다. 예를 들어, 데이터를 삽입, 수정, 삭제하는 작업을 간단한 메서드 호출로 처리할 수 있다.

ManyToManyField 사용 사례:

Django에서 ManyToManyField는 두 모델 간의 다대다 관계를 정의하는 데 사용된다. 예를 들어, 블로그 포스트와 태그 시스템을 생각할 수 있다. 하나의 포스트는 여러 태그를 가질 수 있고, 하나의 태그는 여러 포스트에 속할 수 있다. 이 경우 Post 모델과 Tag 모델 간의 관계를 ManyToManyField로 정의할 수 있다.

CRUD 코드 문제

다음 코드는 Post 모델에 대한 Update(수정) 작업을 처리하는 부분이다. 빈 칸을 채워 코드를 완성하시오.

def post_update(request, post_id):
	post = (                   )
	if (                       ):
		form = PostForm(                )
		if form.is_valid():
			(              )
			return redirect('post_list')
	else:
		form = PostForm(                )
	return render(request, 'posts/form.html', {'form': form})

정답

def post_update(request, post_id):
    post = get_object_or_404(Post, id=post_id)  # 해당 Post를 가져옴
    if request.method == 'POST':  # POST 요청인 경우
        form = PostForm(request.POST, instance=post)  # 기존 Post 객체에 입력된 데이터로 업데이트
        if form.is_valid():
            form.save()  # 변경사항 저장
            return redirect('post_list')  # 리스트 페이지로 리다이렉트
    else:
        form = PostForm(instance=post)  # GET 요청인 경우, 기존 데이터를 폼에 채워줌
    return render(request, 'posts/form.html', {'form': form})  # 템플릿에 폼 전달

위 코드는 post_update 뷰에서 사용자가 특정 게시글을 수정할 수 있도록 처리하는 코드다. get_object_or_404 함수로 수정할 게시글을 가져온 후, POST 요청 시 폼 데이터를 받아 유효성을 검증한 후 저장한다.

0개의 댓글