Lina's Toolbox

장고 기초 이해도 테스트 본문

스파르타 내일 배움 캠프 AI 웹개발 과정/Django framework

장고 기초 이해도 테스트

Woolina 2024. 9. 2. 15:46

 

 

객관식은 쉬웠고

주관식부터는 생각보다는 어려웠는데

그래도 대체적으로 문제는 쉬운편이였다. 다 맞은듯?!

그래도 블로그에 나온 문제 정리해보자


객관식

  1. Django 프로젝트에서 다양한 관리 명령을 실행할 수 있게 하는 파일은 무엇인가요?
    • A) settings.py
    • B) urls.py
    • C) views.py
    • D) manage.py
  2. 다음 중 Django에서 제공하는 기본적인 데이터베이스는 무엇인가요?
    • A) PostgreSQL
    • B) MySQL
    • C) SQLite
    • D) MongoDB
  3. Django의 QuerySet 메서드 중 데이터베이스에서 특정 조건에 맞는 모든 레코드를 반환하는 메서드는 무엇인가요?
    • A) filter()
    • B) get()
    • C) exclude()
    • D) all()
  4. Django 템플릿 시스템에서 변수의 값을 출력할 때 사용하는 문법은 무엇인가요?
    • A) {{ 변수 }}
    • B) { 변수 }
    • C) {% 변수 %}
    • D) [[ 변수 ]]
  5. 웹 어플리케이션에서 쿠키(Cookie)의 주요 목적은 무엇인가요?
    • A) 사용자의 세션 데이터를 서버에 저장하기 위해
    • B) 사용자의 브라우저에 데이터를 저장하여 다음 방문시 사용하기 위해
    • C) 데이터베이스 쿼리를 최적화 하기 위해
    • D) 사용자의 암호를 안전하게 저장하기 위해
  6. Django에서 특정URL에 대한 요청을 처리할 뷰(View)와 연결할 때 주로 사용하는 함수는 무엇인가요?
    • A) path()
    • B) url()
    • C) include()
    • D) route()
  7. 다음 중 Django의 ModelForm을 사용하는 이유로 가장 적절한 것은 무엇인가요?
    • A) 폼을 통해 입력된 데이터를 데이터베이스에 자동으로 저장하기 위해
    • B) 유저로부터 입력된 데이터를 검증하지 않고 직접 처리하기 위해
    • C) Django의 인증시스템을 우회하기 위해
    • D) HTML 템플릿에서 직접 쿼리셋을 사용하기 위해

주관식

 

  1. Django의 MTV 패턴에서 각 요소(Model, Template, View)의 역할을 간단히 설명하세요.
    • Model: 데이터베이스 구조를 정의하고, 데이터를 관리하는 역할을 합니다. 데이터베이스 테이블과 매핑되며, 데이터를 저장, 조회, 수정, 삭제하는 기능을 제공합니다.
    • Template: 사용자에게 보여지는 화면을 담당합니다. HTML 파일과 같은 템플릿을 통해 데이터를 시각적으로 표현하며, 동적인 웹 페이지를 생성하는 데 사용됩니다.
    • View: 사용자의 요청을 처리하고, 적절한 데이터를 가져와서 템플릿과 결합하여 응답을 생성하는 역할을 합니다. View는 Model과 Template 사이에서 중개자 역할을 합니다.
  2. Django에서 settings.py 파일의 주요 역할을 구체적인 예시를 들어 설명하세요.
    • settings.py 파일은 Django 프로젝트의 설정을 관리하는 파일입니다. 데이터베이스 설정, 설치된 앱, 미들웨어, 정적 파일 경로, 템플릿 설정, 국제화 설정, 보안 키 등의 다양한 프로젝트 설정이 이 파일에 포함됩니다. 프로젝트 전반의 동작을 조정하고, 필요한 외부 리소스나 라이브러리를 연결하는 역할을 합니다.
  3. Django ORM이란 무엇이며, 왜 사용하는지 설명하세요.
    • Django ORM(Object-Relational Mapping)은 Python 객체를 데이터베이스의 테이블과 매핑하여 데이터베이스 조작을 간단하고 직관적으로 수행할 수 있게 해주는 도구입니다. SQL 쿼리를 작성하지 않고도 Python 코드만으로 데이터베이스와 상호 작용할 수 있게 해줍니다. 이를 통해 데이터베이스 독립성을 유지할 수 있으며, 데이터베이스 작업을 더 안전하고 효율적으로 수행할 수 있습니다.
  4. Django의 Custom UserModel을 사용하는 이유와 장점을 설명하세요.
    • Django의 기본 User 모델을 사용하는 대신 Custom UserModel을 사용하면, 사용자 모델을 확장하거나 수정할 수 있어 프로젝트의 요구사항에 맞게 사용자 정보를 관리할 수 있습니다. 예를 들어, 추가적인 사용자 필드가 필요하거나 로그인 방식(예: 이메일로 로그인)을 변경하고 싶을 때 유용합니다. Custom UserModel을 사용하면 향후 확장성도 더 좋아지고, 프로젝트 시작 시 이러한 커스터마이징을 도입하면 나중에 구조 변경이 필요할 때 발생할 수 있는 문제를 예방할 수 있습니다.
  5. Django에서 Model 클래스는 데이터베이스 테이블과 매핑됩니다. Django ORM에서 모델을 정의할 때 필드를 정의할 수 있는 다양한 옵션 중 ManyToManyField에 대해 구체적인 사용 사례를 들어 설명하세요.
    • Django의 ManyToMany는 두 모델간의 다대다 관계를 정의할 때 사용됩니다. 다대다 관계란 한 모델의 여러 인스턴스가 다른 모델의 여러 인스턴스와 연결될 수 있는 경우를 말합니다. 예를 들어, 하나의 학생이 여러 과목을 수강할 수 있고, 동시에 하나의 과목을 여러 학생이 수강할 수 있는 상황이 있을 수 있습니다.
    • Django는 이러한 관계를 처리하기 위해 자동으로 중간 테이블을 생성하며 이 테이블에는 두 모델의 외래 키가 저장되어 있습니다.

코드 작성 문제

 

  1. Django 모델을 작성하세요. "BlogPost"라는 이름의 모델을 만들고, 제목(title), 내용(content), 작성일(created_at), 수정일(updated_at) 필드를 추가하세요.
    • 제목은 문자열(CharField), 내용은 텍스트(TextField), 작성일과 수정일은 날짜/시간(DateTimeField) 필드로 정의합니다.
    • created_at과 updated_at 필드는 각각 자동으로 생성되도록 설정하세요.
from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

 

 

 

2. Django에서 사용자가 로그인할 수 있는 간단한 로그인 뷰를 작성하세요.

  • 사용자가 로그인 폼을 제출했을 때, 해당 사용자를 인증하고, 성공적으로 로그인할 경우 'home' 페이지로 리디렉션합니다.
  • 로그인 실패 시 다시 로그인 페이지로 리디렉션하며, 실패 메시지를 출력하세요.
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        
        # 이곳에 코드를 작성해 주세요.
        
    return render(request, 'login.html')

 

🔽 답안

더보기
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            messages.error(request, 'Invalid username or password')
            return redirect('login')
    return render(request, 'login.html')

 

'스파르타 내일 배움 캠프 AI 웹개발 과정 > Django framework' 카테고리의 다른 글

API 문서화  (0) 2024.09.04
Django Auth  (1) 2024.09.04
Django의 URL namespace  (0) 2024.09.02
Django Form  (0) 2024.08.31
Django MTV 사용하기 RUD (Read, Update, Delete)  (0) 2024.08.30