[python] Flask를 사용하여 뉴스 애플리케이션 구현하기

Flask는 Python으로 웹 애플리케이션을 빠르게 만들 수 있는 경량 웹 프레임워크입니다. 이번에는 Flask를 사용하여 뉴스 애플리케이션을 구현하는 방법에 대해 알아보겠습니다.

목차

  1. Flask 설치
  2. 데이터베이스 설정
  3. 애플리케이션 구현
  4. 결론

Flask 설치

Flask를 설치하려면 다음 명령어를 사용합니다.

pip install Flask

이 명령어를 실행하여 Flask를 설치합니다.

데이터베이스 설정

이 예시에서는 SQLite 데이터베이스를 사용하여 애플리케이션의 데이터를 저장할 것입니다. 데이터베이스를 설정하려면 다음과 같이 코드를 작성합니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///news.db'
db = SQLAlchemy(app)

class News(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)

위 코드는 Flask 애플리케이션에 SQLAlchemy를 연결하고, News 라는 모델을 정의하며, SQLite 데이터베이스에 news.db라는 이름으로 저장한다는 것을 보여줍니다.

애플리케이션 구현

뉴스 애플리케이션의 구현은 Flask의 라우팅 및 템플릿 기능을 사용하여 다양한 기능을 추가할 수 있습니다. 사용자에게 뉴스를 보여주는 기능부터 뉴스를 추가하고 삭제하는 기능까지 다양한 기능을 구현할 수 있습니다.

from flask import render_template, request, redirect, url_for

@app.route('/')
def index():
    news_list = News.query.all()
    return render_template('index.html', news_list=news_list)

@app.route('/add_news', methods=['GET', 'POST'])
def add_news():
    if request.method == 'POST':
        title = request.form['title']
        content = request.form['content']
        news = News(title=title, content=content)
        db.session.add(news)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('add_news.html')

@app.route('/delete_news/<int:id>')
def delete_news(id):
    news = News.query.get_or_404(id)
    db.session.delete(news)
    db.session.commit()
    return redirect(url_for('index'))

위 코드는 Flask 애플리케이션에 세 가지 메인 라우트를 추가한 예시입니다. 이 예시에서는 홈페이지에 뉴스 목록을 보여주는 index 라우트, 뉴스를 추가하는 add_news 라우트, 그리고 뉴스를 삭제하는 delete_news 라우트가 구현되어 있습니다.

결론

Flask를 사용하여 뉴스 애플리케이션을 구현하는 방법에 대해 알아보았습니다. Flask의 간결한 문법과 다양한 기능을 활용하여 애플리케이션을 발전시킬 수 있습니다. Flask를 사용하여 웹 애플리케이션을 구현하고자 하는 경우, 이 예시를 참고하면 도움이 될 것입니다.

위에서 다룬 내용을 토대로 자신만의 뉴스 애플리케이션을 만들어 보시기 바랍니다. 감사합니다!

참고 자료