CRUD가 동작하는 todo 앱 만들기 by chatGPT

     

CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)의 약자로, 데이터베이스에서 가장 기본적인 작업들입니다. 따라서 CRUD가 동작하는 Todo 앱을 만들기 위해서는 데이터베이스와 연동하여 해당 기능들을 구현해야 합니다.

 

아래는 간단한 CRUD 기능을 갖는 Todo 앱의 예시 코드입니다.

 

# 필요한 라이브러리를 import 합니다.
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy

# Flask 앱을 생성합니다.
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'  # 데이터베이스 설정
db = SQLAlchemy(app)

# Todo 모델을 정의합니다.
class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    description = db.Column(db.String(200))
    completed = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return '<Todo %r>' % self.id

# Todo 생성 API
@app.route('/todo', methods=['POST'])
def create_todo():
    title = request.json['title']
    description = request.json.get('description', '')
    todo = Todo(title=title, description=description)
    db.session.add(todo)
    db.session.commit()
    return jsonify({'message': 'Todo created successfully!'})

# 모든 Todo 조회 API
@app.route('/todo', methods=['GET'])
def get_all_todos():
    todos = Todo.query.all()
    result = []
    for todo in todos:
        todo_data = {}
        todo_data['id'] = todo.id
        todo_data['title'] = todo.title
        todo_data['description'] = todo.description
        todo_data['completed'] = todo.completed
        result.append(todo_data)
    return jsonify(result)

# 특정 Todo 조회 API
@app.route('/todo/<int:id>', methods=['GET'])
def get_todo_by_id(id):
    todo = Todo.query.get_or_404(id)
    todo_data = {}
    todo_data['id'] = todo.id
    todo_data['title'] = todo.title
    todo_data['description'] = todo.description
    todo_data['completed'] = todo.completed
    return jsonify(todo_data)

# Todo 수정 API
@app.route('/todo/<int:id>', methods=['PUT'])
def update_todo_by_id(id):
    todo = Todo.query.get_or_404(id)
    title = request.json['title']
    description = request.json.get('description', '')
    completed = request.json.get('completed', False)
    todo.title = title
    todo.description = description
    todo.completed = completed
    db.session.commit()
    return jsonify({'message': 'Todo updated successfully!'})

# Todo 삭제 API
@app.route('/todo/<int:id>', methods=['DELETE'])
def delete_todo_by_id(id):
    todo = Todo.query.get_or_404(id)
    db.session.delete(todo)
    db.session.commit()
    return jsonify({'message': 'Todo deleted successfully!'})

# 앱을 실행합니다.
if __name__ == '__main__':
    app.run(debug=True)

 

위 코드에서는 Flask와 Flask-SQLAlchemy를 사용하여 Todo 앱을 구현하였습니다. Todo 모델은 각각의 Todo를 나타내는 데이터를 저장하며, 각각의 CRUD 기능은 다음과 같이 구현되어 있습니다.

 

  1. Create(생성)
    • HTTP Method: POST
    • URL: /todo
    • Request Body: {'title': '할 일 제목', 'description': '할 일 설명'}
    • Response Body: {'message': 'Todo created successfully!'}
  2. Read(읽기)
    • HTTP Method: GET
    • URL: /todo
    • Response Body: [{'id': 1, 'title': '할 일 제목', 'description': '할 일 설명', 'completed': False}, {...}, {...}]
    • HTTP Method: GET
    • URL: /todo/{id}
    • Response Body: {'id': 1, 'title': '할 일 제목', 'description': '할 일 설명', 'completed': False}
  3. Update(갱신)
    • HTTP Method: PUT
    • URL: /todo/{id}
    • Request Body: {'title': '수정된 할 일 제목', 'description': '수정된 할 일 설명', 'completed': True}
    • Response Body: {'message': 'Todo updated successfully!'}
  4. Delete(삭제)
    • HTTP Method: DELETE
    • URL: /todo/{id}
    • Response Body: {'message': 'Todo deleted successfully!'}

위의 예시 코드는 간단한 Todo 앱의 CRUD 기능을 구현한 것으로, 더욱 복잡한 앱에서는 보다 다양한 기능을 추가할 수 있습니다.

 

 

 


여기 위에까지 가 chatGPT한테 "CRUD를 이용한 TODO앱 만들기"라고 물어봤을 때의 답변. ㅋㅋㅋ 블로그 유입 키워드에 "CRUD를 이용한 TODO앱 만들기"가 있어서 chatGPT가 잘 만들어주지 않을까?라고 생각했는데, 생각보다 훌륭하게 만들어줬다. 다만 코드에 대한 설명이 없어서 뭔가 따라 치기는 쉽겠지만 교육용 도로는 사용하지 못할 것 같다. 음.. 그냥 stack overflow정도의 느낌이랄까?

 

하지만 질문을 물어보고 복붙만으로 이정도 블로그 글을 쓸 수 있다는 건 좋은 것 같다. 글의 양만 좀 더 많아진다면 자동 포스팅도 되지 않을까 싶다. 

 

그리고 추가적으로, chatGPT는 맞춤법이 틀리지 않는다. 나보다 나은듯... ㅋㅋ 

반응형

댓글

Designed by JB FACTORY