※ 이 글은 다음 URL: https://django-book.readthedocs.io/en/latest/introduction.html 내용을 요약 정리한 내용임을 미리 알려드립니다.
1. Django란?
Django는 차세대 웹 프레임워크이다.
- 최소한의 유지보수로 최고의 효율을 낼 수 있는 웹 애플리케이션 도구
- 반복적이고 짜증나고 골치 아픈것을 완화 시켜줌
2. Django는 왜 사용해야할까?
(1) CGI
최초의 동적인 웹 프로토콜은 CGI(Common Gateway Interface)이며 웹사이트의 혁명을 불러 일으켰습니다.
하지만 CGI는 재사용성, 개발자가 소스코드를 이해하는데 큰 어려움이 있습니다.
(2) PHP(ASP, JSP, etc.)
PHP는 이런 문제를 많이 해결했고, 전세계에서 가장 인기있는 도구가 되었습니다. PHP의 주요 혁신은 사용 용이성이었고, HTML을 이미 알고있다면 PHP의 러닝커브가 매우 낮습니다.
그러나, PHP는 매우 간편하기 때문에 엉성하고 반복적이며 잘못된 코드를 만들 수 있습니다. 또한 보안 취약성으로부터 도움이 되지 않기 때문에 개발자가 문제를 알아 차렸을때는 너무 늦습니다.
(3) Django(Ruby on Rails, spring, etc.)
때문에 3세대 프레임워크들이 등장하게 되었고, 3세대 프레임 워크는 패턴에 대한 높은 수준의 추상화, 문제 해결방법에 대한 명확한 규칙 등 PHP가 가진 문제점을 많이 해결한 프레임워크입니다.
※ MVC 패턴
Django는 파일을 4가지로 분리합니다. (models.py, views.py, urls.py, HTML 템플릿)
"4가지 파일은 모두 독립적으로 개발 및 변경"이 가능합니다!
# models.py (the database tables)
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=50)
pub_date = models.DateField()
# views.py (the business logic)
from django.shortcuts import render
from models import Book
def latest_books(request):
book_list = Book.objects.order_by('-pub_date')[:10]
return render(request, 'latest_books.html', {'book_list': book_list})
# urls.py (the URL configuration)
from django.conf.urls.defaults import *
import views
urlpatterns = patterns('',
(r'^latest/$', views.latest_books),
)
# latest_books.html (the template)
<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body></html>
- models.py는 데이터베이스에서 레코드를 생성, 검색, 업데이터, 삭제 역할을 담당합니다.
- views.py는 페이지에 대한 비즈니스 로직이 포함됩니다. (models.py에서 얻은 정보를 기반으로 사용자에게 템플릿을 반환합니다.)
- urls.py는 주어진 URL 패턴에 의한 model 또는 view를 호출합니다.
- latest_books.html은 view에서 사용자에게 반환되는 템플릿 페이지이다.(템플릿에 데이터베이스 정보가 더해지면 View!)
3. 한줄요약
코드의 재사용성 즉, 객체 지향 프로그래밍을 위해 차세대 프레임 워크를 이용하자
'Python > Django' 카테고리의 다른 글
[Django] django에서 데이터 받기 (0) | 2022.09.13 |
---|---|
[Django] db connection, raw query... (0) | 2022.03.21 |
[django] class-based view, csrf (0) | 2022.03.14 |
[Django] django.core serializers VS drf serializers 차이점 (0) | 2022.03.08 |