DJango 서버개발, 서드파티 패키지 활용 및 직접 패키지 개발하기

Django는 웹 개발을 위한 강력하고 유연한 프레임워크로, 웹 애플리케이션을 빠르고 쉽게 개발할 수 있도록 도와줍니다. 다양한 내장 기능을 제공하며, 서드파티 패키지를 활용하여 기능을 확장할 수 있습니다. 또한, 자신만의 패키지를 개발하여 프로젝트의 요구에 맞춘 솔루션을 제공하는 것도 가능합니다. 이번 글에서는 Django 서버 개발 과정, 서드파티 패키지 활용법, 그리고 직접 패키지를 개발하는 방법에 대해 상세히 설명하겠습니다.

Django 설치 및 기본 설정

Django를 사용하기 위해서는 먼저 Django를 설치해야 합니다. 파이썬의 패키지 관리 시스템인 pip를 이용해 설치할 수 있습니다. 커맨드라인에서 다음 명령어를 입력하세요.

pip install django

설치가 완료되면, 새로운 Django 프로젝트를 생성할 수 있습니다. 다음 명령어를 실행하여 ‘myproject’라는 이름의 새로운 프로젝트를 생성합니다.

django-admin startproject myproject

생성된 프로젝트 디렉토리로 이동한 후, 서버를 실행하여 정상적으로 설치되었는지 확인할 수 있습니다.

cd myproject
python manage.py runserver

브라우저에서 http://127.0.0.1:8000에 접속하면 Django 환영 페이지를 볼 수 있습니다.

Django 앱 생성

프로젝트 내에 Django 앱을 생성하여 개별 기능을 모듈화합니다. 다음 명령어로 ‘myapp’이라는 앱을 생성할 수 있습니다.

python manage.py startapp myapp

앱을 생성한 후, 프로젝트 설정 파일인 settings.py에 앱을 등록해야 합니다. INSTALLED_APPS 항목에 ‘myapp’을 추가합니다.

INSTALLED_APPS = [
        ...,
        'myapp',
    ]

서드파티 패키지 활용하기

Django는 다양한 서드파티 패키지를 통해 기능을 강화할 수 있습니다. 여기서는 가장 많이 사용되는 서드파티 패키지인 Django Rest Framework (DRF)와 Django Allauth를 예로 들어보겠습니다.

Django Rest Framework (DRF) 설치 및 설정

RESTful API를 쉽게 구축할 수 있게 도와주는 DRF를 설치해보겠습니다.

pip install djangorestframework

설치가 완료되면, settings.py 파일에 DRF를 추가합니다.

INSTALLED_APPS = [
        ...,
        'rest_framework',
    ]

간단한 API 엔드포인트를 만들어보겠습니다. myapp/views.py에 다음 코드를 추가합니다.

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

class HelloWorld(APIView):
    def get(self, request):
        return Response({"message": "안녕하세요, Django!"}, status=status.HTTP_200_OK)

이제 라우팅 설정을 위해 myapp/urls.py 파일을 생성하고 다음 코드를 추가합니다.

from django.urls import path
from .views import HelloWorld

urlpatterns = [
    path('hello/', HelloWorld.as_view(), name='hello_world'),
]

그리고 프로젝트의 메인 urls.py에 이 앱의 URL을 포함시킵니다.

from django.urls import path, include

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

이제 http://127.0.0.1:8000/api/hello/에 접속하면 JSON 데이터가 반환되는 것을 확인할 수 있습니다.

Django Allauth 설치 및 설정

소셜 로그인과 사용자 인증을 쉽게 구현할 수 있게 도와주는 Django Allauth 패키지를 설치해보겠습니다.

pip install django-allauth

설치가 완료되면, settings.py에 관련 설정을 추가합니다.

INSTALLED_APPS = [
        ...,
        'django.contrib.sites',
        'allauth',
        'allauth.account',
        'allauth.socialaccount',
    ]

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    ...
    'allauth.account.auth_backends.AuthenticationBackend',
)

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'

이제 URL을 설정하겠습니다. urls.py 파일에 Django Allauth의 URL 패턴을 추가합니다.

urlpatterns = [
        ...,
        path('accounts/', include('allauth.urls')),
]

이제 사용자가 로그인하고 회원가입할 수 있는 기능이 활성화되었습니다. 기본적으로 제공되는 템플릿을 사용하여 로그인, 회원가입 등을 구현할 수 있습니다.

직접 패키지 개발하기

이제 Django의 강력한 기능 중 하나인 자기 자신만의 패키지를 개발해보겠습니다. Django 패키지를 만들기 위해서는 다음 단계를 따릅니다.

1. 패키지 디렉토리 구조 설정

패키지를 위한 새로운 디렉토리를 생성합니다. 예를 들어, ‘mypackage’라는 폴더를 생성하고 다음과 같은 구조를 가집니다.

mypackage/
    ├── mypackage/
    │   ├── __init__.py
    │   ├── models.py
    │   ├── views.py
    │   └── urls.py
    ├── setup.py
    └── README.md

2. 패키지 코드 작성

models.py에 간단한 모델 클래스를 추가합니다.

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        return self.name

views.py에 간단한 뷰도 추가해보겠습니다.

from django.shortcuts import render
from .models import Product

def product_list(request):
    products = Product.objects.all()
    return render(request, 'product_list.html', {'products': products})

3. URL 설정

urls.py를 다음과 같이 설정합니다.

from django.urls import path
from .views import product_list

urlpatterns = [
    path('products/', product_list, name='product_list'),
]

4. 패키지 배포를 위한 설정

setup.py 파일을 생성하여 패키지를 배포할 수 있습니다.

from setuptools import setup, find_packages

setup(
    name='mypackage',
    version='0.1',
    packages=find_packages(),
    install_requires=[
        'Django>=3.0',
    ],
    author='Your Name',
    author_email='your_email@example.com',
    description='A simple Django package example.',
 )

5. 패키지 배포

이제 패키지를 배포할 준비가 되었습니다. PyPI에 배포하기 위해서는 twine을 사용할 수 있습니다.

pip install twine

패키지를 빌드한 후 다음 명령어로 배포할 수 있습니다.

python setup.py sdist
twine upload dist/*

결론

Django는 웹 개발을 위한 강력한 도구이며, 서드파티 패키지와 맞춤형 패키지를 활용하여 프로젝트를 강화할 수 있습니다. Django Rest Framework를 통해 API 개발을 쉽게 할 수 있으며, Django Allauth를 사용하여 사용자 인증을 간편하게 구현할 수 있습니다. 또한, 자신만의 패키지를 개발함으로써 재사용 가능한 코드를 작성하고 배포할 수 있습니다.

이제 여러분도 Django의 다양한 기능을 활용하여 멋진 웹 애플리케이션을 개발할 수 있습니다. 실습을 통해 Django의 매력을 깊이 느껴보세요!