학교/DJANGO

Django 기말시험대비정리

서윤-정 2023. 12. 18. 00:56

[장고 프레임워크]

파이썬으로 작성된 오픈 소스 웹 프레임워크는 모델-뷰-템플레이트(MVT) 패턴을 따르고 있음

 

 

1️⃣ 구성

장고는 파이썬으로 코딩한 모델을 관계형 데이터베이스로 구축해주는 모델(model), 

HTTP 요청을 처리한느 웹 템플릿 시스템인 뷰(view),

URL의 라우팅을 처리하는 URL 컨트롤러(controller)로 구성된 MVT 디자인 패턴을 따른다.

 

- 모델(model)

모델은 데이터에 관한 정보를 담는다.

데이터에 대한 접근, 검증, 작동과 데이터 사이의 관계를 정의하는데, 

일반적으로 각각의 모델은 데이터베이스에서 테이블에 해당한다.

장고에서는 모델을 정의할 때 필드의 종류를 지정해줘야 하는데, 

이것이 데이터베이스에게 컬럼 타입을 알려주고 HTML 폼으로 표시될 때의 입력 타입도 내포하는 역할을 한다.

또한 장고의 폼 자동 생성 API를 이용할 때 데이터 검증에 쓰이기도 한다.

 

- 뷰(view)

어떤 데이터가 표시될 것인지를 정의한다.

뷰는 HTTP 응답(response)를 반환해야 하며, 응답의 종류는 웹 페이지, 리디렉션, 문서 등 다양한 형태가 가능하다.

장고에는 자주 사용되는 형태의 뷰를 패턴화하여 추상화 해둔 재사용 가능한 뷰들을 내장해 놓았는데,

이들을 제네릭 뷰라고 하며, 원하는 제네릭 뷰를 상속한 클래스 뷰를 생성하여 사용할 수 있다.

 

- 템플릿(template)

데이터가 어떻게 표시되는지를 정의한다. 

템플릿은 사용자에게 실제로 보여지는 웹 페이지나 문서를 다룬다.

흔히 HTML에 기반하여 템플릿을 만들며, HTML에 동적인 요소를 추가하기 위해

파이썬의 일부 기능을 쓰게 도와주는 장고 템플릿 태그가 존재한다.

 

 

 

 

2️⃣ 특징

장고는 웹 개발에서 번거로운 요소들을 새로 개발할 필요없이 내장된 기능만을 이용해 빠른 개발을 할 수 있다는 장점이 있다.

1) MVC 패턴 기반 MVT

장고 MVC을 기반으로 한 프레임워크이다.

장고에서는 view를 template, controller를 view라고 부른다.

장고에서 view는 데이터를 가져오고 변형하는 컴포넌트인 반면에

template는 데이터를 사용자에게 보여주는 컴포넌트이다.

 

2) 객체 관계 매핑

장고의 객체 관계 매칭은 데이터베이스 시스템과 데이터 모델 클래스를 연결하는 다리와 같은 역할을 한다.

이런 ORM 기능을 통해 다양한 데이터베이스 시스템을 지원하고 있으며, 

이미 구축한 데이터베이스 시스템을 다른 데이터베이스로 변경하는 경우에도 설정을 조금만

변경하면 가능하도록 쉽고 편리해졌다.

 

3) 자동으로 구성되는 관리자 화면

장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위하여 프로젝트를 시작하는 시점에 기본 기능으로 관리자 화면을 제공한다. 

이런 관리자 화면을 통해서 애플리케이션에서 사용하는 데이터들을 쉽게 생성하거나 변경할 수 있으며,

개발자가 별도의 관리 기능을 개발할 필요가 없다.

 

4) 우아한 URL 설계

웹 프로그래밍에서 URL 디자인은 필수인데, 장고에서는 유연하면서도 강력한 기능을 제공한다.

장고에서는 우아한 URL 방식을 채택하여 URL을 직관적이고 쉽게 표현할 수 있다.

또한 정규 표현식을 사용하여 복잡한 URL도 표현할 수 있으며,

각 URL 형태를 파이썬 함수에 1:1로 연결할 수 있도록 되어있어 개발이 편리하며, 이해하기도 쉽다.

 

5) 자체 템플릿 시스템

장고는 내부적으로 확장이 가능하고 디자인이 쉬운 강력한 템플릿 시스템을 갖고 있다.

이를 통해 화면 디자인과 로직에 대한 코딩을 분리하여 독립적으로 개발 진행이 가능하다.

장고의 템플릿 시스템은 HTML과 같은 텍스트형 언어를 쉽게 다룰 수 있도록 개발되었다.

 

6) 캐시 시스템

동적인 페이지를 만들기 위해서 데이터베이스 쿼리를 수행하고 템플릿을 해석하면,

관련 로직을 실행해서 페이지를 생성하는 일은 서버에 엄청난 부하를 주는 작업이다.

그래서 캐시 시스템을 사용하여 자주 이용되는 내용을 저장해 두었다가 재사용하면 성능을 높일 수 있다.

장고의 캐시 시스템은 캐시용 페이지를 메모리, 데이터베이스 내부, 파일 시스템 중 아무 곳에나 저장할 수 있다.

또한 캐시 단위를 페이지에서부터 사이트 전체 또는 특정 뷰의 결과, 템플릿의 일부 영역만을 지정하여 저장해둘 수 있다.

 

7) 다국어 지원

장고는 동일한 소스코드를 다른 나라에서도 사용할 수 있도록

텍스트의 번역, 날짜/시간/숫자의 포맷, 타임존의 지정 등과 같은 다국어 환경을 제공한다.

간단한 작업만으로 메시지를 하나 이상의 언어로 번역해주기 때문에 다국어를 제공하는 웹사이트에 아주 유용하다.

 

8) 풍부한 개발환경

장고는 개발에 도움이 될 수 있는 여러 가지 환경을 제공한다.

대표적으로 테스트 용 서버를 포함하고 있어서 개발 과정에서 아파치 등의 웹 서버가 없어도 테스트를 진행할 수 있다.

또한 디버깅 모드를 사용할 경우에는 에러를 쉽게 파악하고 해결할 수 있도록 아주 상세한 메시지를 보여준다.

 

9) 소스 변경사항 자동 번영

장고에서는 *.py 파일의 변경 여부를 감시하고 있다가 변경이 되면 실행 파일에 변경 내역을 바로 반영해 준다.

그래서 장고 테스트용 웹 서버를 실행 중인 상태에서 소스 파일을 수정하더라도 웹서버를 다시 시작할 필요 없이 

자동으로 새로운 파일이 반영된다.

 

 

 

 

 

3️⃣ config 프로젝트 관련 python 파일들

1) config/ : 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됨. 

이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트 가능

2) config/ __init__.py : Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일.

3) config/settings.py : 현재 Django 프로젝트의 환경 및 구성 저장

Django settings에서 환경 설정이 어떻게 동작하는지 확인 가능

4) config/urls.py : 현재 Django project의 URL 선언 저장.

Django로 작성된 사이트의 '목차'라고 할 수 있음

5) config/asgi.py : 현재 프로젝트를 서비스 하기 위한 ASGI 호환 웹 서버의 진입점.

6) mysite/wsgi.py : 현재 프로젝트를 서비스 하기 위한 WSGI 호환 웹 서버의 진입점

 

 

4️⃣ bookmark 앱 관련 파이썬 파일들

1) bookmark/ : 애플리케이션명으로 만들어진 애플리케이션 디렉터리

2) admin.py : Admin 사이트에 모델 클래스를 등록해 주는 파일

3) apps.py : 애플리케이션의 설정 클래스를 정의하는 파일

4) models.py : 데이터베이스 모델 클래스를 정의하는 파일

5) tests.py : 단위 테스트용 파일

6) views.py: 뷰 함수를 정의하는 파일. 함수형 뷰 및 클래스형뷰 모두 이 파일에 정의

7) migrations 디렉터리: 데이터베이스 변경사항을 관리하기 위한 디렉터리.

데이터베이스에 추가, 삭제, 변경 등이 발생하면 변경 내역을 기록한 파일들이 위치

 

 

 

5️⃣ 템플릿 시스템

1) 템플릿 변수: 출력 처리

{{ vatiable }}

템플릿 시스템은 변수를 평가해서 변수값으로 출력

변수명은 일반 프로그래밍의 변수명처럼 문자, 숫자, 밑줄(_)을 사용하여 이름 정의

 

2) 템플릿 필터

아래의 예시처럼 파이프(|) 문자 사용

name 변수값의 모든 문자를 소문자로 바꿔주는 필터

{{ name|lower }}

 

3) 템플릿 태그: 기능적 처리

{% for athlete in athlete.list %}      // athlete.list에 있는 각 athlete에 대해 반복하는 Django의 for문

<li> {{ athlete.name }} </li>           // for문 안에 있는 부분. 각 athlete 객체의 name 속성 출력

{% endfor %}                                // for문 끝을 나타내는 부분. Django 템플릿에서 반복문 종료할 대 이 부분 사용

 

{% if athlete.list %}                // athlete가 존재하는지 여부 확인 조건문. 만약 athlete.list가 비어있지 않다면, 아래 블록 실행
Number of athlete: {{ athlete_list:length }}         // athlete.list가 비어있지 않은 경우 실행되는 부분. 선수의 수를 나타내는 메시지 출력. {{ athlete_list:length }}는 athlete_list 길이(요소의 개수)를 출력하는 템플릿 변수
{% elif athlete_+in_locker_room.list %}      // athlete_list가 비어잇을 때, 대안으로 athlete_in_locker_room.list에 선수가 있다면 실행되는 조건문
Athletes should be out of th locker room soon!      // athlete_+in_locker_room.list에 선수가 있는 경우 실행되는 부분
{% else %}         // 앞의 조건들이 모두 만족되지 않는 경우에 실행되는 부분. 아무 선수도 없는 상황
No athletes.       // 최종적으로 아무 선수도 없는 경우에 출력되는 메시
{% endif %}

 

{% csrf_token %}     // 보안적 태그

 

{% url %} // url관련 태그

{# csrf_token #} // 주석 처리 태그

 

 

 


[기출문제 사례]

1. 장고에서 사용하는 디자인 패턴은 MVT이다.

2. 장고 웹 서버 프로그래밍에서 가장 중요한 파일로 프로젝트의 전반적인 관리 명령을 내리는 파이썬 프로그램은 manage.py이다. 

3. settings.py은 장고 프레임워크의 개발 환경 세팅이라는 파일로 로그 설정, APP 등록, DB 설정 등 관리하는 파일이다.

4. views.py 파일은 어떤 데이터가 표시될 것인지를 정의하는 것으로 HTTP 응답을 반환해야 하며, 응답의 종류로 웹 페이지, 리디렉션, 문서 등 다양한 형태가 가능하다.

5. templates는 데이터가 어떻게 표시되는지를 정의하는 것으로 사용자에게 실제로 보여지는 웹페이지나 문서를 다루는 곳이다. 

 

[주관식 문제]

1. django는 파이썬으로 작성된 오픈 소스 웹 프레임워크로, MVC 패턴을 따르고 있다.

-> X

: django는 MTV 패턴을 따르고 있음

2. settiings.py는 현재 Django 프로젝트의 환경 및 구성을 저장하며, 환경 설정으로 debug, installed_apps, templates, database 등 설정하며, 설정이 잘 동작하는지 확인할 수 있다.

-> O

3. 개발 서버는 순수 파이썬으로 작성된 무거운 웹 서버이다. 운영 준비가 될 때까지 Apache와 다른 운영 서버를 구성해 주어야 한다.

-> X

: 개발 서버는 django라는 프레임워크를 활용하여 가볍게 만들 수 있음

4. django에는 웹 개발에서 자주 사용되는 애플리케이션이 contrib 패키지에 내장되어 있다.

-> O

5. 서버에 데이터를 전달하는 방법으로 GET 방식과 POST 방식을 설명하시오.

- GET 방식: URL 주소 뒤에 파라미터를 붙여서 데이터를 전달하는 방식

- POST 방식: HTTP Request 헤더에 파라미터를 붙여서 데이터를 전송하는 방식

6. form 태그에 대해 간단히 설명하시오.

- action: 사용자가 입력한 데이터를 받아 처리하기 위한 웹 프로그램(ASP, PHP, JSP... 등)의 페이지 지정

- method: 웹 서버와 클라이언트 간의 통신 방법 지정(GET, POST)

- type: 폼의 모양과 기능 결정

- name: 폼의 이름 결정

7. 웹 페이지 공간을 분할하는 두 가지 방식에 대하여 설명하시오.

- <div>와 <span> 태그: div태그는 웹 브라우저 전체 공간에 대해 분할, span 태그는 웹 브라우저의 일부 영역에 대해 분할

- <iframe> 태그: 하나의 웹 문서 안에 또 다른 웹 문서를 표시하는 방법. 

8. 장고 구성에 대해 설명하시오.

장고는 파이썬으로 코딩한 모델을 관계형 데이터베이스로 구축해주는 모델, HTTP 요청을 처리하는 웹 템플릿 시스템인 뷰, URL의 라우팅을 처리하는 URL 컨트롤러로 구성된 MVT 디자인 패턴을 따른다.

9. 장고 설치 후 'students'라는 프로젝트를 생성하는 명령어를 쓰시오.

django-admin startproject students .

10. 장고 실행 후 관리자(admin)로 로그인하기 위해 관리자를 등록하는 명령어를 쓰시오.

python manage.py creatersuperuser

11. 장고의 특징에 대해 아는데로 기술하시오.

- MVT 모델 적용

- 객체 관계 매핑

- 우아한 URL 설계

- 자체 템플릿 시스템

- 캐시 시스템

- 다국어 지원

- 풍부한 개발환경

- 소스 변경사항 자동 반영

'학교 > DJANGO' 카테고리의 다른 글

Django 기말고사 대비 정리  (1) 2024.06.19
Django 중간고사 대비 정리  (1) 2024.04.21
Django CRUD 생성  (0) 2023.12.18