17장: 웹 개발
파이썬은 웹 개발을 위한 강력한 도구를 제공합니다. 이 장에서는 파이썬을 사용하여 웹 애플리케이션을 구축하는 방법에 대해 알아보겠습니다. 여기서는 `Flask`와 `Django`라는 두 가지 인기 있는 웹 프레임워크를 다룹니다.
#### 17.1 Flask 소개
`Flask`는 간단하고 유연한 파이썬 웹 프레임워크로, 소규모 프로젝트에 적합합니다. 먼저 `Flask`를 설치해야 합니다.
```sh
pip install Flask
```
##### 17.1.1 기본 Flask 애플리케이션
다음은 기본적인 `Flask` 애플리케이션 예제입니다.
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
```
이 코드를 `app.py` 파일로 저장하고 실행하면, 웹 브라우저에서 `http://127.0.0.1:5000/`에 접속할 수 있습니다.
##### 17.1.2 경로와 뷰 함수
경로(Route)는 URL과 연결된 함수입니다. `Flask`에서는 `@app.route` 데코레이터를 사용하여 경로를 정의합니다.
```python
@app.route('/about')
def about():
return "This is the About page"
```
##### 17.1.3 템플릿 렌더링
`Flask`는 `Jinja2` 템플릿 엔진을 사용하여 HTML 템플릿을 렌더링합니다.
```python
from flask import render_template
@app.route('/hello/<name>')
def hello(name):
return render_template('hello.html', name=name)
```
`hello.html` 템플릿 파일은 다음과 같습니다:
```html
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
```
##### 17.1.4 폼 데이터 처리
`Flask`를 사용하여 웹 폼 데이터를 처리할 수 있습니다.
```python
from flask import request
@app.route('/submit', methods=['POST'])
def submit():
name = request.form['name']
return f"Hello, {name}!"
```
HTML 폼 예제는 다음과 같습니다:
```html
<!DOCTYPE html>
<html>
<head>
<title>Submit Form</title>
</head>
<body>
<form action="/submit" method="post">
<input type="text" name="name" placeholder="Enter your name">
<input type="submit" value="Submit">
</form>
</body>
</html>
```
#### 17.2 Django 소개
`Django`는 강력하고 배터리 포함된 파이썬 웹 프레임워크로, 대규모 프로젝트에 적합합니다. 먼저 `Django`를 설치해야 합니다.
```sh
pip install django
```
##### 17.2.1 Django 프로젝트 생성
`Django` 프로젝트를 생성하려면 다음 명령을 실행합니다.
```sh
django-admin startproject myproject
```
##### 17.2.2 Django 애플리케이션 생성
프로젝트 내에서 애플리케이션을 생성하려면 다음 명령을 실행합니다.
```sh
cd myproject
python manage.py startapp myapp
```
##### 17.2.3 URL 구성
`Django`에서 URL 구성은 `urls.py` 파일을 사용합니다.
```python
# 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'),
]
```
##### 17.2.4 뷰 함수
`Django`의 뷰 함수는 HTTP 요청을 처리하고 응답을 반환합니다.
```python
# myapp/views.py
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello, Django!")
```
##### 17.2.5 템플릿 렌더링
`Django`는 템플릿 엔진을 사용하여 HTML 템플릿을 렌더링합니다.
```python
# myapp/views.py
from django.shortcuts import render
def hello(request, name):
return render(request, 'hello.html', {'name': name})
```
`hello.html` 템플릿 파일은 다음과 같습니다:
```html
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
```
##### 17.2.6 데이터베이스 모델
`Django`는 데이터베이스 모델을 정의하고 관리하는 강력한 ORM을 제공합니다.
```python
# myapp/models.py
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
def __str__(self):
return self.name
```
모델을 데이터베이스에 적용하려면 마이그레이션을 생성하고 적용해야 합니다.
```sh
python manage.py makemigrations
python manage.py migrate
```
##### 17.2.7 관리자 인터페이스
`Django`는 자동으로 생성된 관리자 인터페이스를 제공합니다.
```python
# myapp/admin.py
from django.contrib import admin
from .models import Person
admin.site.register(Person)
```
관리자 인터페이스에 접속하려면, `http://127.0.0.1:8000/admin/`에 접속합니다.
#### 17.3 REST API 구축
`Flask`와 `Django`는 모두 RESTful API를 구축할 수 있습니다. 여기서는 `Flask`와 `Django REST framework`를 사용하여 REST API를 구축하는 방법을 알아보겠습니다.
##### 17.3.1 Flask REST API
`Flask`를 사용하여 간단한 REST API를 구축하는 예제입니다.
```python
from flask import Flask, jsonify, request
app = Flask(__name__)
# 데이터 저장
people = []
@app.route('/people', methods=['GET'])
def get_people():
return jsonify(people)
@app.route('/people', methods=['POST'])
def add_person():
person = request.get_json()
people.append(person)
return jsonify(person), 201
if __name__ == '__main__':
app.run(debug=True)
```
##### 17.3.2 Django REST framework
`Django REST framework`는 강력한 REST API 구축을 위한 도구입니다. 먼저 `djangorestframework`를 설치해야 합니다.
```sh
pip install djangorestframework
```
`Django REST framework`를 사용하여 간단한 REST API를 구축하는 예제입니다.
```python
# myapp/serializers.py
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ['id', 'name', 'age']
# myapp/views.py
from rest_framework import generics
from .models import Person
from .serializers import PersonSerializer
class PersonListCreate(generics.ListCreateAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer
# myapp/urls.py
from django.urls import path
from .views import PersonListCreate
urlpatterns = [
path('people/', PersonListCreate.as_view(), name='people-list-create'),
]
```
`Django`의 설정 파일에 `rest_framework`를 추가합니다.
```python
# myproject/settings.py
INSTALLED_APPS = [
...
'rest_framework',
'myapp',
]
```
이상으로, 파이썬에서 웹 개발을 수행하는 방법에 대해 알아보았습니다. 다음 장에서는 테스트와 관련된 내용을 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!
---
이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.
댓글
댓글 쓰기