본문 바로가기
프로그래밍/Python

[Python] 12. Python의 "웹 개발"

by iwbap 2024. 6. 18.
728x90

Python 학습: 웹 개발

Python을 사용하여 웹 개발을 할 수 있는 다양한 프레임워크가 있습니다. 이번 글에서는 Flask를 사용한 간단한 웹 애플리케이션 작성, Django의 프로젝트 구조와 주요 구성 요소, 그리고 RESTful API를 구현하는 방법에 대해 알아보겠습니다.


1. Flask: 간단한 웹 애플리케이션 작성

Flask는 경량 웹 프레임워크로, 간단하고 유연하게 웹 애플리케이션을 작성할 수 있습니다.

 

Flask 설치 : pip install Flask

 

 

간단한 웹 애플리케이션 작성:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

@app.route('/about')
def about():
    return "This is the about page."

if __name__ == '__main__':
    app.run(debug=True)
 

위의 예제에서 Flask 애플리케이션을 생성하고, 두 개의 라우트('/'와 '/about')를 정의했습니다. 애플리케이션을 실행하면 지정된 라우트로 접근할 수 있습니다.


2. Django: Django 프로젝트 구조, 앱 생성, 모델, 뷰, 템플릿

Django는 강력한 기능을 제공하는 웹 프레임워크로, 복잡한 웹 애플리케이션을 쉽게 개발할 수 있습니다.

 

Django 설치 : pip install django

 

Django 프로젝트 생성 : django-admin startproject myproject

                                       cd myproject

Django 앱 생성 : python manage.py startapp myapp

 

 

Django 프로젝트 구조:

arduino
 
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
        migrations/
            __init__.py
        templates/
            myapp/
                home.html
 
 

모델 정의 (myapp/models.py):

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    published = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
 
 

마이그레이션 수행 : python manage.py makemigrations

                                 python manage.py migrate

 

뷰 정의 (myapp/views.py):

from django.shortcuts import render
from .models import Article

def home(request):
    articles = Article.objects.all()
    return render(request, 'myapp/home.html', {'articles': articles})
 
 

URL 설정 (myproject/urls.py):

from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
]
 
 

템플릿 작성 (myapp/templates/myapp/home.html):

html
 
<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h1>Articles</h1>
    <ul>
        {% for article in articles %}
            <li>{{ article.title }} - {{ article.published }}</li>
        {% endfor %}
    </ul>
</body>
</html>
 

위의 예제에서 Django 프로젝트를 생성하고, 앱을 생성한 후 모델, 뷰, 템플릿을 정의하여 기본적인 웹 애플리케이션을 구성했습니다.


3. API: RESTful API, Flask-RESTful, Django REST framework

RESTful API는 웹 서비스의 상호 운용성을 높이기 위한 아키텍처 스타일입니다. Flask와 Django에서는 RESTful API를 쉽게 구현할 수 있는 라이브러리를 제공합니다.

 

Flask-RESTful : Flask-RESTful은 Flask 애플리케이션에서 RESTful API를 구현할 수 있도록 도와주는 확장입니다.

 

Flask-RESTful 설치 : pip install flask-restful

 

Flask-RESTful 예제:

from flask import Flask
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True)
 

위의 예제에서 HelloWorld 클래스를 정의하고, get 메서드를 통해 GET 요청을 처리합니다. api.add_resource를 사용하여 리소스를 경로에 매핑합니다.

 

 

Django REST framework : Django REST framework는 Django에서 RESTful API를 쉽게 구축할 수 있도록 도와주는 강력한 도구입니다.

Django REST framework 설치 : pip install djangorestframework

 

Django 설정 (myproject/settings.py):

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

시리얼라이저 정의 (myapp/serializers.py):

from rest_framework import serializers
from .models import Article

class ArticleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Article
        fields = ['id', 'title', 'content', 'published']
 
 

뷰 정의 (myapp/views.py):

from rest_framework import viewsets
from .models import Article
from .serializers import ArticleSerializer

class ArticleViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
 
 

URL 설정 (myproject/urls.py):

from django.contrib import admin
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from myapp.views import ArticleViewSet

router = DefaultRouter()
router.register(r'articles', ArticleViewSet)

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

위의 예제에서 Django REST framework를 사용하여 Article 모델에 대한 API를 생성했습니다. ArticleSerializer를 정의하고, ArticleViewSet을 통해 CRUD 작업을 구현했습니다. DefaultRouter를 사용하여 API 엔드포인트를 설정했습니다.


이 글에서는 Python을 사용한 웹 개발에 대해 알아보았습니다. Flask를 사용한 간단한 웹 애플리케이션 작성, Django의 프로젝트 구조와 주요 구성 요소, 그리고 RESTful API를 구현하는 방법을 이해하고 활용하면 더 복잡한 웹 애플리케이션을 쉽게 개발할 수 있습니다. Happy Coding!

728x90