파이썬으로 간단한 게시판을 만듭니다. (Flask와 SQL을 사용한 웹 앱 개발 시작) #1

파이썬으로 웹 앱 만들기



프로그래밍에 왠지 흥미를 가지고 공부하고 문법을 기억하거나 등, 여러가지 손을 붙여 공부해 보는 것은 좋지만, 그럼 그것을 활용하려면 무엇을 하면 좋을까?
그렇게 상황에 빠지는 사람이 많이 있다고 생각합니다.
Instagram이나 Twitter의 클론을 만드는 등의 학습 방법도 있습니다만, 만드는 데 있어서는 데이타베이스등의 지식도 얽혀 오기 때문에 솔직하게 힘들습니다.
여기에서는 최소한의 데이터베이스 기능과 간단한 웹 앱 개발에 사용하는 Flask를 이용하여 간단한 게시판을 만듭니다.

구현 환경


  • Window10 Home 64bit
  • Python 3.6.4 | Anaconda, Inc.

  • 도서관



    Flask==1.0.2
    Flask-SQLAlchemy==2.3.2
    Jinja2==2.10
    SQLAlchemy==1.2.15
    sqlite3(아마도 표준)

    데이터베이스 정보



    데이터베이스는 테이블 형식으로 관리되는 데이터를 처리합니다. 여기서 만드는 게시판은 최소한으로 유지하기 위해 이러한 구성으로 합니다.


    id
    날짜
    이름
    문장


    1
    date1
    name1
    text1

    2
    date2
    name2
    text2


    사용할 데이터베이스



    여기서는 Python으로 쉽게 처리 할 수있는 Sqlite3을 사용합니다.

    Flask



    앱 시작



    app.py
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def bbs():
        message = "Hello"
        return render_template("index.html", message = message)
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    이 프로그램을 실행하는 다음과 같은 문자열이 출력된다고 생각합니다.
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 583-549-282
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    

    htp://127.0.0.1:5000/ 에서 브라우저를 열면 이와 같은 표시가 나옵니다.



    이제 앱을 시작할 수있었습니다.

    Flask-SQLAlchemy



    공식 튜토리얼 를 참고로 합니다.

    SQLAlchemy는 데이터베이스 작업을 객체 지향처럼 처리합니다.

    app.py
    class Article(db.Model):
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        pub_date = db.Column(db.DateTime, nullable=False,
                                    default=datetime.utcnow)
        name = db.Column(db.Text())
        article = db.Column(db.Text())
    

    파이썬의 터미널에서 다음과 같은 명령을 실행하면 데이터베이스가 생성됩니다.
    >>> from app import db
    >>> db.create_all()
    >>>
    

    구현해보기



    html 부분을 포함한 소스는 여기 에 있습니다.

    app.py
    from flask import Flask, request, render_template
    from datetime import datetime
    from flask_sqlalchemy import SQLAlchemy
    app = Flask(__name__)
    
    db_uri = 'sqlite:///test.db'
    app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
    db = SQLAlchemy(app)
    
    class Article(db.Model):
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        pub_date = db.Column(db.DateTime, nullable=False,
                                    default=datetime.utcnow)
        name = db.Column(db.Text())
        article = db.Column(db.Text())
    
    @app.route("/")
    def bbs():
        text = Article.query.all()
        return render_template("index.html", lines = text)
    
    @app.route("/result", methods=["POST"])
    def result():
        date = datetime.now()
        article = request.form["article"]
        name = request.form["name"]
        admin = Article(pub_date=date, name=name, article=article)
        db.session.add(admin)
        db.session.commit()
        return render_template("bbs_result.html", article=article, name=name, now=date)
    
    if __name__ == "__main__":
        app.run(debug=True)
    

    이것으로 게시판과 비슷한 움직임을 하는 웹 앱의 완성입니다.



    다음은 스레드가있는 게시판을 만드는 방법과 배포하는 방법에 대해 씁니다.
    파이썬으로 간단한 게시판을 만듭니다. (Flask와 SQL을 사용한 웹 앱 개발 입문) #2

    좋은 웹페이지 즐겨찾기