IMG-LOGO
공지사항 :

Python django

lmkfox - 2025-04-08 07:19:45 39 Views 0 Comment

좋아, 이번엔 Python의 웹 프레임워크 중 하나인 Django에 대해 자세히 설명해줄게.


Django란?

Django는 Python으로 작성된 고수준 웹 프레임워크야. 웹 애플리케이션을 빠르고 효율적으로 개발할 수 있게 해줘. “DRY(Don’t Repeat Yourself)“와 “재사용성”을 강조하고, 보안에 신경 쓰면서도 확장성이 좋아서 규모 있는 프로젝트에 자주 사용돼.


Django의 특징

MTV 아키텍처 사용

Django는 Model-Template-View 패턴을 사용해. MVC(Model-View-Controller)와 비슷한 구조야.

Model: 데이터베이스 구조 정의 (ORM 사용)

Template: 사용자에게 보여지는 HTML

View: 비즈니스 로직 처리

강력한 ORM (Object-Relational Mapping)

SQL을 직접 쓰지 않고, Python 클래스만으로 DB 연동이 가능해.

자동 관리자(admin) 페이지 제공

데이터베이스 기반의 관리 UI를 자동으로 생성해줘서 운영에 매우 유리해.

보안 기능 내장

XSS, CSRF, SQL Injection 같은 취약점에 기본적으로 대응돼 있음.

풍부한 문서와 커뮤니티

공식 문서가 잘 정리되어 있고, 튜토리얼도 많아서 입문자에게 좋아.


Django 프로젝트 구조 예시

Django 프로젝트를 시작하면 보통 이런 구조가 만들어져:

myproject/
├── manage.py
├── myproject/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── myapp/
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── views.py
    └── templates/


Django 기초 예시

1. 프로젝트 생성

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

2. Model 작성

# myapp/models.py
from django.db import models

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

3. 마이그레이션으로 DB 반영

python manage.py makemigrations
python manage.py migrate

4. 관리자(admin) 등록

# myapp/admin.py
from django.contrib import admin
from .models import Post

admin.site.register(Post)

5. View와 Template 작성

# myapp/views.py
from django.shortcuts import render
from .models import Post

def post_list(request):
    posts = Post.objects.all()
    return render(request, 'post_list.html', {'posts': posts})
<!-- templates/post_list.html -->
<h1>블로그 글 목록</h1>
{% for post in posts %}
  <h2>{{ post.title }}</h2>
  <p>{{ post.content }}</p>
{% endfor %}

6. URL 연결

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
]
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
]


Django를 배우기 좋은 사람

• 웹 애플리케이션을 Python으로 만들고 싶은 사람

• 보안이나 관리자 기능이 내장된 프레임워크가 필요한 사람

• 빠르게 개발해서 실제 서비스까지 연결하고 싶은 사람


더 알고 싶은 부분이 있어? 예를 들어:

• 회원가입/로그인 구현 방법

• Django와 React 연결 방법

• Django REST Framework로 API 만들기

어떤 쪽이든 알려줘. 그 부분부터 자세히 설명해줄게.


댓글