Django 특징
1. 정해진 MVT에 맞추어 빠른 웹 개발이 가능
2. 웹 개발에 필요한 기능들(인증, sitemap, rss feed 등)이 탑재
3. 일반적인 보안 기능을 구현 및 사용자 인증시스템을 제공하여 보안의 안전성을 높임
4. 빠르고 유연하게 확장 가능
5. 다양한 플랫폼 개발에 사용
Django 소개
1. ORM(object-relational mapper)
- 데이터모델들을 파이썬으로 정의하여 데이터베이스 접근 API를 제공
from django.db import models
class Band(models.Model):
"""A model of a rock band."""
name = models.CharField(max_length=200)
can_rock = models.BooleanField(default=True)
class Member(models.Model):
"""A model of a rock band member."""
name = models.CharField("Member's name", max_length=200)
instrument = models.CharField(
choices=(
("g", "Guitar"),
("b", "Bass"),
("d", "Drums"),
),
max_length=1,
)
band = models.ForeignKey("Band")
2. URLs와 views
- 깔끔하고 우아한 URL scheme을 위하여 URL 디자인 장려
- URLconf 모듈을 제작하여 URL을 디자인.
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path("bands/", views.band_listing, name="band-list"),
path("bands/<int:band_id>/", views.band_detail, name="band-detail"),
path("bands/search/", views.band_search, name="band-search"),
]
# views.py
from bands.models import Band
from django.shortcuts import render
def band_listing(request):
"""A view of all bands."""
bands = Band.objects.all()
return render(request, "bands/band_listing.html", {"bands": bands})
3. Templates
- 템플릿 언어는 기존의 HTML언어와 함께 사용 가능
<body>
<h1>All Bands</h1>
<ul>
{% for band in bands %}
<li>
<h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2>
{% if band.can_rock %}<p>This band can rock!</p>{% endif %}
</li>
{% endfor %}
</ul>
</body>
4. Forms
- HTML의 form을 작성하기위한 라이브러리 제공.
- 제출할 데이터의 유효성 확인 및 데이터를 python에서 사용하도록 타입 변경을 처리
from django import forms
class BandContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.TextField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
5. Authentication
- 기능을 갖춘 안전한 인증 시스템 제공.
- 사용자 계정, 그룹, 권한 및 쿠키 기반 사용자 세션을 처리
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def my_protected_view(request):
"""A view that can only be accessed by logged-in users"""
return render(request, "protected.html", {"current_user": request.user})
6. Amdin
- 자동화된 관리자 인터페이스를 제공
- 사용자 정의 관리자 페이지 제작 가능
from bands.models import Band, Member
from django.contrib import admin
class MemberAdmin(admin.ModelAdmin):
"""Customize the look of the auto-generated admin for the Member model"""
list_display = ("name", "instrument")
list_filter = ("band",)
admin.site.register(Band) # Use the default options
admin.site.register(Member, MemberAdmin) # Use the customized options
7. Internationalization
- 특정 지역의 언어 번역 및 날짜, 시간 기능 제공
from django.shortcuts import render
from django.utils.translation import gettext
def homepage(request):
"""
Shows the homepage with a welcome message that is translated in the
user's language.
"""
message = gettext("Welcome to our site!")
return render(request, "homepage.html", {"message": message})
{% load i18n %}
<html>
<head>
<title>{% trans 'Homepage - Hall of Fame' %}</title>
</head>
<body>
{# Translated in the view: #}
<h1>{{ message }}</h1>
<p>
{% blocktrans count member_count=bands.count %}
Here is the only band in the hall of fame:
{% plural %}
Here are all the {{ member_count }} bands in the hall of fame:
{% endblocktrans %}
</p>
<ul>
{% for band in bands %}
<li>
<h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2>
{% if band.can_rock %}<p>{% trans 'This band can rock!' %}</p>{% endif %}
</li>
{% endfor %}
</ul>
</body>
</html>
8. Security
- 여러가지 보안 기능을 제공
Django Third-Party 패키지
1. Django Rest Framework (DRF): Django로 RESTful API를 쉽게 구축할 수 있게 도와주는 패키지입니다.
2. Celery: 비동기 작업 큐를 관리하는 데 사용됩니다. 주로 백그라운드 작업을 처리할 때 사용됩니다.
3. Django Channels: Django에 WebSocket을 추가하여 실시간 기능을 제공할 수 있습니다.
4. Django Allauth: 다양한 인증 제공자 (OAuth, SSO 등)를 지원하는 인증 패키지입니다.
5. Django Crispy Forms: 폼의 렌더링을 더 쉽게 하고, 부트스트랩과 같은 프론트엔드 프레임워크와 쉽게 통합할 수 있습니다.
6. Django Debug Toolbar: 개발 중에 디버깅을 더 쉽게 할 수 있도록 도와주는 툴바입니다.
7. Django Extensions: 유용한 명령어와 도구들을 모아놓은 패키지입니다.
8. Django Storages: Amazon S3와 같은 클라우드 스토리지 백엔드를 쉽게 통합할 수 있도록 도와줍니다.
9. Django REST Knox: DRF의 토큰 인증을 개선한 패키지로, 더 안전하고 확장 가능한 토큰 기반 인증을 제공합니다.
10. Whitenoise: Django 앱에서 정적 파일을 서빙하기 쉽게 만들어주는 패키지로, 특히 Heroku와 같은 환경에서 유용합니다.
'웹 개발 프레임워크 > Django 4.2' 카테고리의 다른 글
[Django4] 프로젝트 구조 및 코딩컨벤션 (0) | 2024.07.03 |
---|---|
[Django4] Django 버전별 특징 (1) | 2024.07.01 |
[Django4] 목차 (0) | 2024.07.01 |