반응형
22.1 웹 프레임워크 개요 (Django, Flask 등)
Django
Django는 완전한 기능을 갖춘 고수준의 웹 프레임워크로, 신속한 개발과 간결한 디자인을 목표로 합니다. Django는 ORM, 관리자 인터페이스, 인증 시스템 등을 기본으로 제공합니다.
Django 설치 및 프로젝트 생성
pip install django
django-admin startproject mysite
cd mysite
python manage.py startapp myapp
Django 프로젝트 구조
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
myapp/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
기본 뷰 작성
# myapp/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, Django!")
URL 설정
# mysite/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
]
서버 실행
python manage.py runserver
Flask
Flask는 간단하고 유연한 마이크로 웹 프레임워크로, 확장이 용이하며 가볍습니다. Flask는 기본적으로 최소한의 기능만 제공하고, 필요한 기능을 플러그인 형태로 추가할 수 있습니다.
Flask 설치 및 기본 애플리케이션 생성
pip install flask
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
서버 실행
python app.py
22.2 RESTful API 개발
RESTful API는 HTTP 프로토콜을 사용하여 웹 리소스를 관리하는 방식입니다. Flask와 Django에서 RESTful API를 개발하는 방법을 살펴보겠습니다.
Flask에서 RESTful API 개발
Flask와 Flask-RESTful 설치
pip install flask flask-restful
기본 RESTful API 작성
# app.py
from flask import Flask, request
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
class HelloWorld(Resource):
def get(self):
return {'hello': 'world'}
def post(self):
data = request.get_json()
return {'you sent': data}, 201
api.add_resource(HelloWorld, '/')
if __name__ == '__main__':
app.run(debug=True)
Django에서 RESTful API 개발 (Django REST framework 사용)
Django REST framework 설치
pip install djangorestframework
Django 설정 파일에 추가
# mysite/settings.py
INSTALLED_APPS = [
...
'rest_framework',
]
Serializer와 View 작성
# myapp/serializers.py
from rest_framework import serializers
from .models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
# myapp/views.py
from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
URL 설정
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from myapp import views
router = routers.DefaultRouter()
router.register(r'mymodel', views.MyModelViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(router.urls)),
]
22.3 데이터베이스 연동
파이썬 웹 프레임워크는 데이터베이스와 쉽게 연동할 수 있는 기능을 제공합니다. Django와 SQLAlchemy를 사용한 예를 살펴보겠습니다.
Django ORM 사용
Django ORM(Object-Relational Mapping)은 데이터베이스 연동을 간편하게 해주는 도구입니다.
모델 정의
# myapp/models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
마이그레이션 생성 및 적용
python manage.py makemigrations
python manage.py migrate
데이터베이스 조작
# myapp/views.py
from django.shortcuts import render
from .models import MyModel
def index(request):
items = MyModel.objects.all()
return render(request, 'index.html', {'items': items})
SQLAlchemy 사용
SQLAlchemy는 파이썬의 강력한 ORM 라이브러리입니다.
SQLAlchemy 설치
pip install sqlalchemy
기본 사용법
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///example.db', echo=True)
Base = declarative_base()
class MyModel(Base):
__tablename__ = 'mymodel'
id = Column(Integer, primary_key=True)
name = Column(String)
description = Column(String)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
new_item = MyModel(name='Item1', description='This is item 1')
session.add(new_item)
session.commit()
items = session.query(MyModel).all()
for item in items:
print(item.name)
반응형
'Python 문법 > Python 기본 문법(3.10 기준)' 카테고리의 다른 글
[python3.10 기본] 24. 보안 (0) | 2024.07.02 |
---|---|
[python3.10 기본] 23. 데이터 과학과 머신러닝 (0) | 2024.07.02 |
[python3.10 기본] 21. 네트워킹 (0) | 2024.07.02 |
[python3.10 기본] 20. 병행성 및 병렬성 (1) | 2024.07.02 |
[python3.10 기본] 19. 메타프로그래밍 (0) | 2024.07.02 |