본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 웹 애플리케이션 개발하기: Flask를 활용한 CRUD 기능 구현

by 포탈메이커 2023. 7. 12.

파이썬으로 웹 애플리케이션 개발하기: Flask를 활용한 CRUD 기능 구현

소개

웹 개발은 현재 매우 인기 있는 분야 중 하나로, 파이썬을 이용한 웹 애플리케이션 개발은 특히 많은 사람들에게 사랑받고 있습니다. Flask는 파이썬으로 웹 애플리케이션을 개발하기 위한 가벼운 프레임워크로, 많은 개발자들이 Flask를 사용하여 웹 애플리케이션을 만들고 있습니다. 이번 포스팅에서는 Flask를 활용하여 CRUD (Create, Read, Update, Delete) 기능을 구현하는 방법에 대해 알아보겠습니다.

Flask 프로젝트 설정

먼저, Flask 프레임워크를 사용하여 프로젝트를 시작하기 위해 가장 기본적인 설정을 해야 합니다. 가상 환경을 생성한 후 Flask를 설치해야 합니다. 아래의 명령어를 이용하여 가상 환경을 생성하고 Flask를 설치할 수 있습니다.

$ python -m venv myenv $ source myenv/bin/activate $ pip install flask

가상 환경을 생성한 후, Flask를 설치했다면, 이제 Flask 프로젝트를 시작할 수 있습니다. 프로젝트 폴더를 생성하고 app.py 파일을 만들어 아래의 코드를 작성합니다.

```python from flask import Flask from flask_sqlalchemy import SQLAlchemy

app = Flask(name) app.config['SQLALCHEMYDATABASEURI'] = 'sqlite:///mydatabase.db' db = SQLAlchemy(app)

if name == 'main': app.run() ```

위의 코드는 Flask 애플리케이션을 초기화하고 데이터베이스를 설정하는 기본적인 코드입니다. SQLALCHEMY_DATABASE_URI 설정을 통해 SQLite 데이터베이스를 사용하도록 설정했습니다.

모델과 데이터베이스 생성

이제 데이터베이스를 사용하기 위해 모델을 생성하고 데이터베이스를 생성해야 합니다. Flask의 SQLAlchemy를 사용하여 모델을 정의하고 데이터베이스를 생성하는 방법에 대해 알아보겠습니다.

```python class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False)

db.create_all() ```

위의 코드에서 Post 모델은 id, title, content 속성을 가지고 있습니다. id는 주키(primary key)로 사용되며, titlecontent는 각각 100자 이내의 문자열과 텍스트 형태로 저장됩니다. db.create_all() 메서드는 모델을 기반으로 데이터베이스를 생성합니다.

CRUD 기능 구현

이제 CRUD(Create, Read, Update, Delete) 기능을 구현해보겠습니다. 각 기능에 대한 라우트 함수를 정의하고, HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 요청을 처리하는 방법에 대해 알아보겠습니다.

Create

```python @app.route('/posts', methods=['POST']) def create_post(): title = request.form.get('title') content = request.form.get('content')

new_post = Post(title=title, content=content)
db.session.add(new_post)
db.session.commit()

return 'Post created successfully'

```

위의 코드에서 create_post 함수는 /posts URL로 POST 요청이 들어왔을 때 호출되는 함수입니다. 요청에서 제목(title)과 내용(content)을 가져와 새로운 Post 객체를 생성하고 데이터베이스에 추가합니다.

Read

```python @app.route('/posts/', methods=['GET']) def getpost(postid): post = Post.query.get(post_id) if post is None: return 'Post not found', 404

return f'Title: {post.title}\nContent: {post.content}'

```

위의 코드에서 get_post 함수는 /posts/<post_id> URL로 GET 요청이 들어왔을 때 호출되는 함수입니다. 요청에서 post_id를 가져와 해당 id에 해당하는 Post 객체를 조회하고, 조회한 결과를 반환합니다. 만약 해당 id에 해당하는 포스트가 없다면 404 에러를 반환합니다.

Update

```python @app.route('/posts/', methods=['PUT']) def updatepost(postid): post = Post.query.get(post_id) if post is None: return 'Post not found', 404

title = request.form.get('title')
content = request.form.get('content')

post.title = title
post.content = content
db.session.commit()

return 'Post updated successfully'

```

위의 코드에서 update_post 함수는 /posts/<post_id> URL로 PUT 요청이 들어왔을 때 호출되는 함수입니다. 요청에서 post_id와 새로운 제목(title)과 내용(content)을 가져와 해당 id에 해당하는 Post 객체를 조회하고, 업데이트합니다.

Delete

```python @app.route('/posts/', methods=['DELETE']) def deletepost(postid): post = Post.query.get(post_id) if post is None: return 'Post not found', 404

db.session.delete(post)
db.session.commit()

return 'Post deleted successfully'

```

위의 코드에서 delete_post 함수는 /posts/<post_id> URL로 DELETE 요청이 들어왔을 때 호출되는 함수입니다. 요청에서 post_id를 가져와 해당 id에 해당하는 Post 객체를 조회하고, 삭제합니다.

결론

이번 포스팅에서는 Flask를 사용하여 CRUD 기능을 구현하는 방법에 대해 알아보았습니다. Flask를 이용하여 웹 애플리케이션을 개발하면, 간단하면서도 강력한 기능을 구현할 수 있습니다. Flask를 활용하여 다양한 웹 애플리케이션을 개발해보세요!