장고는 현재 가장 많이 사용되는 파이썬 웹 프레임워크 입니다. 장고를 처음 접했을 때의 신선한 충격이 아직도 잊혀지지 않습니다. 파이썬을 공부하다가 장고를 접했을 때 그 '힙함(!)'은! 장고를 사용하기 위해 그간 python을 공부했구나 하며 파이썬을 안다는 것에 자부심마저 들게 했습니다. 문법과 여러가지 함수를 배웠지만 구현한 웹페이지는 여전히 문서 시트 수준을 벗어나지 못했을 때 장고는 그야말로 기능까지 완벽한 웹을 구축하도록 만들어주었습니다.
초보 개발자도 원하는 것을 잘 만들 수 있도록 웹 구현의 어썸한 강점들를 두루 갖춘 장고는 의외로 나온지 꽤나 오래된 프레임워크입니다. 2003년 Lawrence Journal-World newspaper을 만들던 웹 개발팀 내부 프로젝트로 시작됐는데, 2005년 오픈소스 프로젝트로 공개된 후 구글의 앱 엔진에서 장고를 사용하면서 많은 사람들이 사용하게 되었습니다. 벌써 15년 이상의 세월을 거치며 많은 기능이 추가되고 다듬어진 튼튼한 웹 프레임워크지요. 현재는 파이썬의 대표적인 웹 프레임워크 입니다.
장고는 기본적으로 MVC 패턴에 해당하는 MVT (Model-View-Template)패턴에 따라 개발하도록 설계되어 있습니다. 장고에서는 View를 Template, Controller를 View라고 부릅니다. 장고에서 Model은 데이터베이스에 엑세스하는 컴포넌트이고, View는 데이터를 가져오고 변형하는 컴포넌트 입니다. 반면에 Template은 데이터를 사용자에게 보여주는 컴포넌트 입니다. 그래서 장고를 MVT 프레임워크라고 부르기도 합니다. 개념은 동일합니다.
모델, 뷰, 템플릿 셋 중에서 무엇을 먼저 코딩해야 하는지에 대해 정해진 순서는 없습니다. MVT 방식에 따르면 화면 설계는 뷰와 템플릿 코딩으로 연결되고, 테이블 설계는 모델 코딩에 반영됩니다. 그렇기 때문에 독립적으로 개발할 수 있는 모델을 먼저 코딩하고, 뷰와 템플릿은 서로 영향을 미치므로 모델 이후에 같이 코딩하는 것이 일반적입니다.
장고는 모델 클래스로부터 테이블을 자동으로 생성하기 위해서 models.py 파일에 정의된 모델 클래스를 해석하고 여러 가지 규칙을 적용합니다. 테이블 생성에 관한 자세한 설명은 다음 도큐먼트 페이지를 참고하면 좋습니다.
docs.djangoproject.com/en/3.1/topics/db/models/
웹 페이지를 개발하는데 처음부터 관리자 화면을 제공한다는 것이 얼마나 큰 편리를 주는지 개발해본 분들은 다 공감하실겁니다. 장고는 웹 서버의 콘텐츠, 즉 데이터베이스에 대한 관리 기능을 위해 프로젝트를 시작하는 시점에 기본 기능으로 관리자 화면을 제공합니다. 이런 관리자 화면을 통해서 애플리케이션에서 사용하는 테이블과 데이터들을 쉽게 생성하거나 변경할 수 있습니다. 장고에서 관리자 화면을 기본적으로 제공하기 때문에 개발자가 별도로 관리 기능을 개발할 필요도 없습니다.
웹 프로그래밍에서 URL 디자인은 필수적입니다. 장고에서는 유연하면서도 멋진 URL 기능을 제공합니다. 이를 통해 직관적이고 쉽게 URL을 표현할 수 있습니다. 또한 정규표현식을 사용하여 복잡한 URL도 표현할 수 있습니다. 각 URL 형태를 파이썬 함수에 1:1로 연결하도록 되어있어 개발이 편리하고 이해도 쉽습니다. 웹 브라우저에 'Hello World'를 출력하려면 장고에 간단한 url 규칙을 정의하고 함수 하나만 작성하면 끝 입니다! 이러니 개발 속도가 빠를 수밖에 없지요.
def index(request):
return HttpResponse("Hello World")
장고에서는 확장이 가능하고 디자인이 쉬운 자체 템플릿 시스템을 가지고 있습니다. 디자인과 로직에 대해 코딩을 분리하여 독립적인 개발 진행이 가능합니다. 장고의 템플릿 시스템은 HTML과 같은 텍스트형 언어를 쉽게 다룰 수 있도록 개발되었습니다. 이로써 디자이너와 개발자 간의 협업이 편리해졌습니다. 유의점이 있다면 템플릿 파일을 적절한 디렉토리에 위치시켜야 한다는 것입니다. 장고에서 템플릿 파일을 찾는 방식을 이해하고 있어야 합니다. 장고는 맞는 위치에 있는 템플릿 파일을 찾아낼 수 있습니다. 장고에서 템플릿 파일을 찾을 때는 TEMPLATES 및 INSTALLED_APPS에서 지정된 앱의 디렉토리를 검색합니다. 이 항목들은 프로젝트 설정 파일인 settings.py 파일에 정의되어 있습니다.
웹 프로그램을 만들 때 어려운 것 중 하나는 바로 보안 때문입니다. 획기적인 방법으로 웹 사이트에 공격을 가할 때 이런 공격에 개발자가 혼자서 대응하기란 쉽지 않은 일이지요. 하지만 장고는 이런 공격을 기본적으로 아주 잘 막아줍니다!!
예를 들어, SQL 인젝션(악의적인 SQL을 주입하여 공격하는 방법), XSS(cross-site-scripting, 자바스크립트를 삽입해 공격하는 방법), CSRF(cross-site request forgery, 위조된 요청을 보내는 공격 방법), 클릭재킹(clickjacking, 사용자의 의도하지 않은 클릭을 유도하는 공격 방법)과 같은 보안 공격을 기본적으로 막아줍니다. 장고를 사용하면 이런 보안 공격에 대한 코드를 홀로 짜고 있을 필요가 없습니다. (후,,!ㅠ)
[Django] 장고 프로젝트 생성[혼자 공부하는 장고] (0) | 2021.02.02 |
---|---|
[Django] 장고 설치하기 [파이썬 가상환경/pip install] (0) | 2021.01.28 |
[Django] 혼자 공부하는 장고 노트정리 [django 웹프레임워크] (0) | 2021.01.28 |
댓글 영역