no image
[Python Flask] ORM과 활용
목차 객체-관계형 매핑(Object-Relational Mapping, ORM) ORM 예시 이전 blog 프로젝트에 적용시켜보기 코드가 정상 작동 확인하기 객체-관계형 매핑(Object-Relational Mapping, ORM) 객체-관계형 매핑(ORM)은 Python 객체와 관계형 데이터베이스 간의 데이터를 관리하는 데 사용되는 프로그래밍 기법입니다. 즉, SQL을 사용하는 것처럼 데이터베이스와 상호 작용하는 방법입니다. 사실, 데이터베이스 쿼리 작성 작업을 단순화하는 추상화 작업입니다. 다음은 ORM의 기본적인 작동 방식에 대한 간단하게 설명하겠습니다. 클래스는 데이터베이스 테이블에 해당합니다. Python 코드의 각 클래스는 데이터베이스의 테이블에 해당합니다. 객체는 행에 해당합니다. 해당 클래..
2023.05.12
no image
[Python Flask] 앱 팩토리와 블루 프린트
목차 플라스크 앱 팩토리(Flask Application Factory) 블루 프린트(Blue print) 예시 플라스크 앱 팩토리 Flask 애플리케이션 팩토리(Application Factory)는 유연성을 제공하고 우수한 애플리케이션 설계를 촉진하는 방식으로 애플리케이션을 구조화하기 위해 Flask가 권장하는 디자인 패턴입니다. 애플리케이션 팩토리의 기본 개념은 앱을 설정하기 위해 호출할 수 있는 함수(일반적으로 create_app()라는 이름)로 Flask 애플리케이션을 생성하는 것입니다. 이를 통해 서로 다른 설정으로 동일한 애플리케이션의 여러 인스턴스를 만들 수 있습니다. 다음은 애플리케이션 팩토리가 어떻게 보이는지 보여주는 예시입니다. from flask import Flask def cre..
2023.05.12
no image
[Python Flask] 플라스크(Flask) 실행하기
목차 플라스크 어플리케이션 만들기 Flask 실행하기 Flask 실행하기 플라스크 어플리케이션 만들기 이 플라스크는 이전에 따로 만들었던 Project_01 디렉토리 내에 있는 myproject 디렉토리에서 진행 될 것입니다. 먼저 myproject를 입력해 가상환경으로 진입해줍니다. 이전에 진행했던 내용에 대한 내용은 다음 페이지에 있습니다. 'Python/Flask' 카테고리의 글 목록 IT에 입문하며 배우는 것들과 뉴스들을 요약해 올리고 있습니다. 모든 방문자들에게 감사를 표하며 행운이 가득하길. easyitwanner.tistory.com pybo.py 파일을 생성해 다음 내용을 작성해봅시다. from flask import Flask app = Flask(__name__) @app.route('..
2023.05.12
no image
[Python Flask] 플라스크 프로젝트 생성하기
목차 프로젝트 디렉토리 생성 위 과정을 간단하게 만들기 프로젝트 디렉토리 생성 이전에 venvs를 생성했던 Projects 디렉토리에 다른 프로젝트 디렉토리를 생성해보겠습니다. 이렇게 또 다시 디렉토리를 생성하는 이유는 앞으로 프로젝트를 진행하다 보면 여러 프로젝트를 진행하게 될텐데 이러한 방식으로 구분을 해주는 것이 관리하기가 편하기 때문입니다. 당연한 이야기를 한것이 아닌가 싶지만 각설하고 프로젝트를 생성해봅시다. 1. 프로젝트 디렉토리 생성 vscode에서 버튼을 클릭해서 디렉토리를 만들 수 있습니다. 혹은 다음과 같이 명령어를 통해 디렉토리를 생성할 수 있습니다. 2. 프로젝트를 진행할 디렉토리로 이동: cd 명령어를 통해 프로젝트를 진행할 디렉토리로 진입해줍니다. 3. 가상 환경 진입하기 이전에..
2023.05.12
no image
[Python Flask] 가상환경 생성하고 진입하기
목차 Python 가상환경 가상 환경을 따로 생성하는 이유 venv를 통해 가상환경 생성하기 가상 환경에 진입하기 mac OS에서 가상환경 진입하기 플라스크 모듈 다운로드하기 Python 가상환경 Python 가상 환경은 자체 라이브러리 및 종속성 세트와 함께 특정 Python 설치가 포함된 독립된 디렉토리입니다. 이를 통해 서로 간섭하지 않고 각각 고유한 버전의 Python과 설치된 패키지가 있는 서로 다른 프로젝트에 대해 격리된 환경을 만들 수 있습니다. Python 가상 환경의 주요 특징 격리 가상 환경은 특정 프로젝트에 특정한 패키지 및 종속성을 설치할 수 있는 샌드박스 환경을 제공합니다. 이러한 격리를 통해 한 가상 환경에 설치된 패키지가 다른 가상 환경의 패키지와 충돌하지 않도록 하여 종속성을..
2023.05.12
[Python Flask] 플라스크란?
목차 플라스크(Flask) 플라스크 사용을 위한 툴 다운로드 플라스크(Flask) 플라스크는 파이썬으로 작성된 마이크로 웹 프레임워크입니다. 2010년에 Armin Ronacher가 오픈 소스 프로젝트로 만들었습니다. Flask는 웹 애플리케이션을 구축하는 데 필요한 핵심 기능을 제공하는 데 중점을 둔 단순하고 미니멀한 디자인으로 유명합니다. 특정 도구나 라이브러리를 강요하지 않는다는 점에서 '마이크로'라는 원칙을 따르며, 개발자가 원하는 구성 요소를 선택하고 통합할 수 있습니다. 특징 가볍고 쉽게 시작할 수 있습니다 Flask는 가볍고 코드베이스가 작도록 설계되었습니다. 간단하고 직관적인 API를 갖추고 있어 개발자가 웹 애플리케이션 구축을 빠르게 시작할 수 있습니다. 라우팅 및 URL 매핑 Flask..
2023.05.12
반응형

목차

  1. 객체-관계형 매핑(Object-Relational Mapping, ORM)
  2. ORM 예시
  3. 이전 blog 프로젝트에 적용시켜보기
  4. 코드가 정상 작동 확인하기

객체-관계형 매핑(Object-Relational Mapping, ORM)

객체-관계형 매핑(ORM)은 Python 객체와 관계형 데이터베이스 간의 데이터를 관리하는 데 사용되는 프로그래밍 기법입니다. 즉, SQL을 사용하는 것처럼 데이터베이스와 상호 작용하는 방법입니다. 사실, 데이터베이스 쿼리 작성 작업을 단순화하는 추상화 작업입니다.

다음은 ORM의 기본적인 작동 방식에 대한 간단하게 설명하겠습니다.

  1. 클래스는 데이터베이스 테이블에 해당합니다. Python 코드의 각 클래스는 데이터베이스의 테이블에 해당합니다.

  2. 객체는 행에 해당합니다. 해당 클래스의 각 객체 인스턴스는 테이블의 행에 해당합니다.

  3. 필드는 열에 해당합니다. 객체의 각 속성에 대한 데이터는 해당 테이블의 각 열에 있는 데이터에 해당합니다.

 

ORM의 주요 장점은 개발자가 SQL을 작성하는 대신 Python 코드를 사용하여 데이터베이스와 상호 작용할 수 있다는 것입니다.


예를 들어 다음과 같은 SQL 쿼리를 작성하는 대신

SELECT * FROM users WHERE email = 'test@test.com';


ORM을 사용하여 Python에서 이와 같은 쿼리를 작성할 수 있습니다(SQLAlchemy와 유사한 ORM을 가정할 경우).

user = User.query.filter_by(email='test@test.com').first()


이런 ORM은 다음과 같은 이점을 제공합니다.

  • 개발자로부터 기본 SQL을 추상화하여 개발 속도를 높일 수 있습니다.

  • 개발자가 SQL 대신 Python 코드와 객체를 사용하여 데이터베이스로 작업할 수 있으므로 코드를 더 읽기 쉽고 이해하기 쉽게 만들 수 있습니다.

  • 다양한 데이터베이스와 상호 작용하는 표준 방법을 제공하므로 코드 변경을 최소화하면서 한 데이터베이스에서 다른 데이터베이스로 전환할 수 있습니다.


하지만 ORM에는 몇 가지 단점도 있습니다.

  • 특히 복잡한 쿼리의 경우 원시 SQL보다 느릴 수 있습니다.

  • 원시 SQL만큼 유연하거나 강력하지 않기 때문에 복잡한 쿼리를 작성하기가 더 어려워질 수 있습니다.

  • 데이터베이스에서 실제로 일어나는 일을 모호하게 만들 수 있으며, 제대로 사용하지 않을 경우 비효율성이나 오류가 발생할 수 있습니다.

  • Python에서 널리 사용되는 ORM으로는 SQLAlchemy, Django ORM, Peewee 등이 있습니다. 특히 플라스크 애플리케이션에 많이 사용되는 것은 SQLAlchemy입니다.

ORM 예시

1. 데이터베이스의 사용자 테이블에 해당하는 사용자 모델이 있다고 가정해봅시다.

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)


이 코드에서 db.Model은 데이터베이스의 테이블을 나타내며, User의 각 인스턴스는 해당 테이블의 행이 됩니다. 클래스 속성인 id, 이메일, 비밀번호는 테이블의 열입니다.

 


2. 그런 다음 이러한 클래스를 사용하여 데이터베이스를 쿼리할 수 있습니다. 다음은 이메일로 사용자를 가져오는 방법입니다

def get_user_by_email(email):
    return User.query.filter_by(email=email).first()


이 함수는 이메일 속성(사용자 테이블의 이메일 열에 해당)이 제공된 이메일과 일치하는 첫 번째 사용자 객체를 반환합니다.



3. 데이터베이스에 새 사용자를 추가하는 방법은 다음과 같습니다.

def add_user(email, password):
    new_user = User(email=email, password=password)
    db.session.add(new_user)
    db.session.commit()


이 함수는 새 User 객체를 생성하여 데이터베이스 세션에 추가한 다음 세션을 커밋합니다. 이는 SQL INSERT 연산에 해당합니다.



4. Flask 애플리케이션 객체로 SQLAlchemy 인스턴스를 설정하고 초기화하는 것을 잊지 마세요.

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db.init_app(app)


이것은 매우 단순화된 예시입니다. 실제 애플리케이션에는 더 많은 오류 검사, 비밀번호 저장에 안전한 방법 사용 등이 포함될 수 있습니다. 하지만 이 예시를 통해 Flask 애플리케이션에서 SQLAlchemy와 같은 ORM을 사용하여 SQL 대신 Python 코드를 사용하여 데이터베이스와 상호 작용하는 방법에 대한 아이디어를 얻을 수 있을 것입니다.


이전 blog 프로젝트에 적용시켜보기

이전 블로그 앱 예제에 SQLAlchemy 사용법을 통합해 보겠습니다. 간단한 사용자 모델을 추가하고 이를 애플리케이션 팩토리에 통합하겠습니다.

1. Flask-SQLAlchemy를 설치해야 합니다. 이 작업은 pip로 수행할 수 있습니다.

pip install Flask-SQLAlchemy


2. config.py 파일에 SQLAlchemy 데이터베이스 URI에 대한 줄을 추가합니다.

class Config:
    SECRET_KEY = 'supersecretkey'
    SQLALCHEMY_DATABASE_URI = 'sqlite:///blog.db' # 간소화를 위해 SQLite 사용


3. 데이터베이스 모델을 정의하는 새로운 models.py 파일을 생성합니다.

# blogapp/models.py
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)

 

4. blogapp/__init__.py 파일을 수정하여 SQLAlchemy를 초기화하고 데이터베이스 테이블을 생성합니다.

# blogapp/__init__.py
from flask import Flask

from .config import Config
from .public import public_bp
from .admin import admin_bp
from .models import db  # 추가된 코드

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    
    db.init_app(app)  # 추가된 코드
    with app.app_context():  # 추가된 코드
        db.create_all()  # 추가된 코드

    app.register_blueprint(public_bp)
    app.register_blueprint(admin_bp)
    
    return app


5. 이제 다음과 같이 뷰에서 사용자 모델을 사용할 수 있습니다.

# blogapp/admin/views.py
from flask import Blueprint, request
from blogapp.models import db, User  # 추가된 코드

admin_bp = Blueprint('admin', __name__, url_prefix='/admin')

@admin_bp.route('/add_user', methods=['POST'])
def add_user():
    email = request.form['email']
    password = request.form['password']
    new_user = User(email=email, password=password)
    db.session.add(new_user)
    db.session.commit()
    return 'User added successfully!'


관리자 블루프린트의 새로운 /add_user 경로를 사용하면 '이메일' 및 '비밀번호' 필드가 있는 양식을 제출하여 데이터베이스에 새 사용자를 추가할 수 있습니다. 실제 애플리케이션에서는 이메일이 이미 도용되지 않았는지 확인하고, 보안 저장을 위해 비밀번호를 해시하는 등의 확인을 추가하고 싶을 것입니다.

이렇게 하면 SQLAlchemy를 Flask 애플리케이션에 통합하여 원시 SQL 대신 Python 코드를 사용하여 데이터베이스와 상호 작용하는 데 사용할 수 있습니다.


코드가 정상 작동 확인하기

1. 유닛 테스트: Python에는 테스트 케이스를 작성하는 데 사용할 수 있는 unittest라는 모듈이 내장되어 있습니다. Flask는 테스트에서 HTTP 요청을 시뮬레이션하기 위한 test_client 객체도 제공합니다.

 

이 방법을 실행하기 위해 파일을 만들어봅시다. 먼저 tests 디렉토리를 Learning 디렉토리에 생성합니다. 그리고 test.py 파일을 생성한 후 위의 내용을 붙여넣기 해줍니다. 이 과정이 완료되면 현재 프로젝트의 구성도는 다음과 같아집니다.

/Learning
    /blogapp
        /admin
            __init__.py
            views.py
        /public
            __init__.py
            views.py
        __init__.py
        config.py
        models.py
        /instance
            blog.db
    /tests
        test_routes.py
        test_models.py
    main.py

 

  1) test_routes.py

import unittest
from blogapp import create_app
from blogapp.models import db, User

class TestRoutes(unittest.TestCase):
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client
        with self.app.app_context():
            db.create_all()

    def test_public_index(self):
        response = self.client().get('/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.get_data(as_text=True), '퍼블릭 구역에 오신 것을 환영합니다!')

    def test_admin_add_user(self):
        response = self.client().post('/admin/add_user', data=dict(email="test@example.com", password="password"))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.get_data(as_text=True), '유저가 성공적으로 생성되었습니다!')
    
    def tearDown(self):
        with self.app.app_context():
            db.session.remove()
            db.drop_all()

if __name__ == "__main__":
    unittest.main()

 

  2) test_models.py

import unittest
from blogapp import create_app
from blogapp.models import db, User

class TestModels(unittest.TestCase):
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client
        with self.app.app_context():
            db.create_all()

    def test_create_user(self):
        with self.app.app_context():
            new_user = User(email="test@example.com", password="password")
            db.session.add(new_user)
            db.session.commit()
            user = User.query.filter_by(email="test@example.com").first()
            self.assertIsNotNone(user)
            self.assertEqual(user.email, "test@example.com")
            self.assertEqual(user.password, "password")

    def tearDown(self):
        with self.app.app_context():
            db.session.remove()
            db.drop_all()

if __name__ == "__main__":
    unittest.main()

 

이러한 테스트를 실행하려면 python -m unittest discover 명령을 사용하거나 python -m unittest tests/test_routes.py 또는 python -m unittest tests/test_models.py로 특정 테스트 파일을 실행하면 됩니다.

이 테스트는 기본 테스트이며 실제 애플리케이션에서는 가능한 모든 에지 케이스와 입력을 포함하는 보다 포괄적인 테스트 사례를 포함해야 한다는 점에 유의하세요.

 

성공!



2. 메뉴얼 테스트: 애플리케이션을 실행하고 HTTP 요청을 전송하여 코드를 수동으로 테스트할 수 있습니다. 명령줄에서 curl 또는 httpie와 같은 도구를 사용하거나 Postman 또는 Insomnia와 같은 GUI 도구를 사용할 수 있습니다.


다음은 curl을 사용하여 /add_user 경로를 테스트하는 방법입니다.

curl -X POST -d "email=test@example.com&password=password" http://localhost:5000/admin/add_user

성공!

이것을 자신의 프로젝트 등에 사용할 때에는 localhost:5000을 실제 서버 주소와 포트로 변경한 경우 변경하는 것을 잊지 마세요.



3. 로깅: 코드에 로깅 문을 추가하여 흐름을 파악하고 디버깅할 수 있습니다. 이를 위해 Python의 내장 로깅 모듈을 사용할 수 있습니다.



테스트를 실행한 후에는 항상 정리하는 것을 잊지 마세요. 즉, 테스트 중에 생성된 모든 데이터를 제거해야 합니다. 이는 위의 유니테스트 예제의 tearDown 메서드에서 수행됩니다.


나 왜 또 혼자 프로젝트 진행하고 있지..?  추가로 생성된 데이터는 다음 사이트에서 확인할 수 있습니다.

https://sqliteviewer.app/

 

SQLite Viewer Web App

SQLite Viewer Web App SQLite Viewer Web is a free, web-based SQLite Explorer, inspired by DB Browser for SQLite and Airtable. Use this web-based SQLite Tool to quickly and easily inspect .sqlite files. Your data stays private: Everything is done client-sid

sqliteviewer.app

위 페이지 접속 후 Open File을 클릭 후 instance에 생성된 db파일을 열면 확인할 수 있습니다.

반응형
반응형

목차

  1. 플라스크 앱 팩토리(Flask Application Factory)
  2. 블루 프린트(Blue print)
  3. 예시

플라스크 앱 팩토리

Flask 애플리케이션 팩토리(Application Factory)는 유연성을 제공하고 우수한 애플리케이션 설계를 촉진하는 방식으로 애플리케이션을 구조화하기 위해 Flask가 권장하는 디자인 패턴입니다.

애플리케이션 팩토리의 기본 개념은 앱을 설정하기 위해 호출할 수 있는 함수(일반적으로 create_app()라는 이름)로 Flask 애플리케이션을 생성하는 것입니다. 이를 통해 서로 다른 설정으로 동일한 애플리케이션의 여러 인스턴스를 만들 수 있습니다. 

다음은 애플리케이션 팩토리가 어떻게 보이는지 보여주는 예시입니다.

from flask import Flask

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])

    # 여기서 확장을 초기화합니다...

    # 여기에 블루프린트 등록...

      return app


이 예제에서 config_name은 Flask 애플리케이션의 구성을 결정하는 데 사용되며, 이를 통해 개발, 테스트 및 프로덕션과 같은 환경마다 다른 구성을 사용할 수 있습니다.

Flask 애플리케이션을 시작하려면 다음과 같이 하면 됩니다.

from your_flask_package import create_app

app = create_app('development')

if __name__ == "__main__":
    app.run()


이 패턴의 장점은 다음과 같습니다.

  1. 테스트: 다양한 설정으로 애플리케이션의 테스트 인스턴스를 생성하여 제대로 테스트할 수 있습니다.

  2. 여러 인스턴스: 동일한 프로세스에서 동일한 애플리케이션의 인스턴스를 여러 개 생성할 수 있습니다.

  3. 블루프린트: 애플리케이션 팩토리에 블루프린트를 등록할 수 있으므로 애플리케이션 디자인에 블루프린트 및 모듈성을 사용할 수 있습니다.

  4. 확장: 애플리케이션 팩토리에서 확장을 초기화할 수도 있습니다.

블루 프린트(Blue print)

Flask의 블루프린트는 관련 경로, 오류 처리기 및 기타 HTTP 관련 기능을 재사용 가능한 별도의 Python 모듈로 그룹화하는 방법입니다. 애플리케이션이 복잡해질 때 특히 유용할 수 있습니다.

블루프린트를 만드는 방법은 다음과 같습니다.

from flask import Blueprint

my_blueprint = Blueprint('my_blueprint', __name__)

@my_blueprint.route('/hello')
def hello():
    return 'Hello, World!'


이 예제에서는 'my_blueprint'라는 이름의 새 블루프린트를 생성합니다. 그런 다음 해당 블루프린트에 경로를 정의합니다. 이 블루프린트를 플라스크 애플리케이션에 등록하면 애플리케이션의 일부로 경로를 사용할 수 있습니다.

블루프린트에는 여러 가지 기능이 있으며 몇 가지 다른 방식으로 사용할 수 있습니다.

1. URL 접두사
블루프린트를 등록할 때 URL 접두사를 제공할 수 있습니다. 블루프린트에 정의된 모든 경로에는 이 접두사가 붙습니다. 관련 경로를 함께 그룹화할 때 유용합니다.

app.register_blueprint(my_blueprint, url_prefix='/prefix')


이 경우 앞서 정의한 '/hello' 경로는 실제로 애플리케이션에서 '/prefix/hello'에 위치하게 됩니다.

2. 하위 도메인
마찬가지로 블루프린트를 등록할 때 하위 도메인을 지정할 수도 있습니다. 그러면 블루프린트의 모든 경로를 해당 하위 도메인에서 사용할 수 있습니다.

3. 애플리케이션 전체 에러 핸들러
블루프린트는 애플리케이션에서 오류 처리기를 정의하는 방법과 유사하게 오류 처리기를 정의할 수 있습니다. 블루프린트에 오류 처리기가 정의되어 있으면 해당 블루프린트에 정의된 경로에서 요청을 처리할 때 발생하는 오류에 사용됩니다.

4. 요청 전/요청 후/해체 요청 핸들러
에러 핸들러와 마찬가지로 블루프린트에도 이러한 특수한 유형의 핸들러를 정의할 수 있습니다.

5. 템플릿 및 스태틱 파일
블루프린트에는 자체 템플릿과 스태틱 파일이 있을 수 있으며, 애플리케이션의 특정 부분과 관련된 리소스를 구성하는 데 유용할 수 있습니다.


예시

애플리케이션 팩토리와 블루프린트를 모두 사용하는 플라스크 애플리케이션의 예를 살펴보겠습니다. 간단히 설명하기 위해 누구나 글을 볼 수 있는 공개 영역과 권한이 있는 사용자가 글을 작성하고 편집할 수 있는 관리자 영역의 두 가지 주요 부분으로 구성된 기본 블로그 애플리케이션을 만들어 보겠습니다.

프로젝트의 디렉토리 구조는 다음과 같습니다.

/Learning
    /blogapp
        /admin
            __init__.py
            views.py
        /public
            __init__.py
            views.py
        __init__.py
        config.py
    main.py


각 부분을 살펴봅시다.

1. blogapp/admin/views.py 및 blogapp/public/views.py

이 모듈은 각각 애플리케이션의 관리자 및 공개 부분에 대한 뷰를 정의합니다. 이 모듈은 각각 청사진을 생성하고 해당 청사진에 대한 경로를 정의합니다.

# blogapp/admin/views.py
from flask import Blueprint

admin_bp = Blueprint('admin', __name__, url_prefix='/admin')

@admin_bp.route('/')
def index():
    return "관리자 구역에 오신 것을 환영합니다!"
# blogapp/public/views.py
from flask import Blueprint

public_bp = Blueprint('public', __name__)

@public_bp.route('/')
def index():
    return "퍼블릭 구역에 오신 것을 환영합니다!"


2. blogapp/admin/__init__.py 및 blogapp/public/__init__.py

이 모듈은 애플리케이션을 만들 때 사용할 수 있도록 블루프린트를 가져옵니다.

# blogapp/admin/__init__.py
from .views import admin_bp
# blogapp/public/__init__.py
from .views import public_bp


3. blogapp/config.py

이 모듈은 애플리케이션의 다양한 구성을 정의합니다. 간단하게 하기 위해 하나의 기본 구성만 정의하겠습니다.

# blogapp/config.py
class Config:
    SECRET_KEY = 'supersecretkey'


4. blogapp/__init__.py

이 모듈은 애플리케이션 팩토리를 정의합니다. 이 모듈은 새로운 Flask 애플리케이션을 생성하고, 구성을 로드하고, 블루프린트를 등록합니다.

# blogapp/__init__.py
from flask import Flask

from .config import Config
from .public import public_bp
from .admin import admin_bp

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)
    
    app.register_blueprint(public_bp)
    app.register_blueprint(admin_bp)
    
    return app


5. main.py: 이것이 애플리케이션의 진입점입니다. 애플리케이션 팩토리를 가져와서 애플리케이션의 새 인스턴스를 생성하는 데 사용합니다.

# main.py
from blogapp import create_app

app = create_app()

if __name__ == '__main__':
    app.run()

 

 

이렇게 구성을 마치고 나면 다음과 같이 파일이 구성되야 합니다.


예시 구성 요소 설명
  1. Blueprint
    블루프린트는 관련 라우트, 오류 처리기 및 기타 HTTP 관련 함수 그룹을 Python 모듈로 구성하는 방법입니다. 이를 통해 애플리케이션 기능을 논리적 단위로 분리할 수 있으므로 애플리케이션이 커질수록 관리하기가 더 쉬워집니다.

  2. create_app()
    애플리케이션 팩토리 함수입니다. 이 함수는 플라스크 애플리케이션의 인스턴스를 생성하고, 구성하고, 블루프린트를 등록하는 역할을 합니다. 애플리케이션 팩토리는 서로 다른 구성으로 애플리케이션의 여러 인스턴스를 생성할 수 있기 때문에 유용한 디자인 패턴이며, 특히 테스트에 유용할 수 있습니다.

  3. Config
    Config 클래스는 플라스크 애플리케이션의 구성 변수를 저장하는 데 사용됩니다. 이러한 변수에는 데이터베이스 URI, 세션 쿠키의 비밀 키 등이 포함될 수 있습니다. 주어진 예제에서는 Flask가 쿠키 서명과 같은 작업에 사용하는 SECRET_KEY 구성이 정의되어 있습니다.

  4. app.config.from_object(Config)
    이 줄은 Config 클래스의 구성을 Flask 애플리케이션으로 로드합니다. Flask는 구성 변수를 로드하는 여러 가지 방법을 제공하며, from_object()는 그 중 하나로 파이썬 객체에서 구성 변수를 로드할 수 있게 해줍니다.

  5. app.register_blueprint()
    이 메서드는 플라스크 애플리케이션에 블루프린트를 등록하는 데 사용됩니다. 블루프린트가 등록되면 모든 경로와 에러 핸들러가 애플리케이션의 일부가 됩니다.

  6. url_prefix='/admin'
    블루프린트를 등록할 때 URL 접두사를 제공할 수 있습니다. 해당 블루프린트에 정의된 모든 경로에는 이 URL 접두사가 붙습니다. 이 예제에서는 관리자 청사진의 모든 경로가 '/admin' 아래에 있습니다.

  7. if __name__ == '__main__': app.run()
    이것은 직접 실행하려는 스크립트에 대한 일반적인 파이썬 관용구입니다. 이 스크립트가 직접 실행되는 경우(예: 명령줄에 python main.py를 입력하여) __name__은 '__main__'이 되고 Flask 애플리케이션이 시작됩니다. 이 스크립트를 다른 스크립트에서 모듈로 가져온 경우 __name__은 'main'이 되고 Flask 애플리케이션은 시작되지 않습니다. 이렇게 하면 Flask 애플리케이션을 시작하지 않고도 이 스크립트의 함수와 클래스를 재사용할 수 있습니다.

실행

여기서는 Learning 디렉토리에서 main을 플라스로 작동시키기 위해 다음 명령어를 입력해줍니다.

# 실행할 디렉토리 경로
# D:\Working_Files\07_Python-Project\Projects\Project_01\Learning
# 위 경로는 자신의 경로에 맞겍 지정해주세요

set FLASK_APP=main

 

다음 이미지와 같이 주소에 해당 /admin을 추가하면 다른 화면으로 이동할 수 있습니다.


버튼을 만들어서 이동하거나 할 수 있지만 이는 나중에 더 다뤄보도록 하겠습니다. 이번 포스팅은 여기서 마칠게요~

반응형
반응형

목차

  1. 플라스크 어플리케이션 만들기
  2. Flask 실행하기
  3. Flask 실행하기

플라스크 어플리케이션 만들기

이 플라스크는 이전에 따로 만들었던 Project_01 디렉토리 내에 있는 myproject 디렉토리에서 진행 될 것입니다. 먼저 myproject를 입력해 가상환경으로 진입해줍니다. 이전에 진행했던 내용에 대한 내용은 다음 페이지에 있습니다.

 

 

 

'Python/Flask' 카테고리의 글 목록

IT에 입문하며 배우는 것들과 뉴스들을 요약해 올리고 있습니다. 모든 방문자들에게 감사를 표하며 행운이 가득하길.

easyitwanner.tistory.com

 

pybo.py 파일을 생성해 다음 내용을 작성해봅시다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_pybo():
    return 'Hello, Pybo!'

 

여기서 "app = Flask(name)"는 플라스크(Flask) 애플리케이션을 생성하는 부분입니다. 이 코드는 플라스크 애플리케이션을 초기화하고 구성하는 역할을 합니다.

여기서 각각의 구성 요소는 다음과 같이 설명할 수 있습니다.

  1. "Flask"
    이것은 플라스크 클래스입니다. 이 클래스의 인스턴스를 생성하여 플라스크 애플리케이션을 나타냅니다.

  2. "name"
    이는 현재 모듈의 이름을 나타내는 내장 변수입니다. "main"으로 설정되는 것이 일반적입니다. 이를 통해 플라스크는 현재 모듈이나 패키지의 위치를 알고 이를 기반으로 애플리케이션을 설정할 수 있습니다.

  3. "app = Flask(name)"
    플라스크 애플리케이션의 인스턴스를 생성하고 이름이 "main"('/')인 모듈을 기반으로 설정하는 것을 의미합니다. 이렇게 생성된 애플리케이션은 라우팅, 템플릿, HTTP 요청 처리 등과 같은 플라스크의 다양한 기능을 사용할 수 있습니다.

즉, 이 코드를 통해 플라스크 애플리케이션 객체를 생성하고, 해당 애플리케이션을 사용하여 라우팅 및 기타 설정을 구성할 수 있게 됩니다.


Flask 실행하기

 

  • 오류 1

 

명령 프롬프트에 flask run을 입력하면 플라스크를 싱행할 수 있습니다. 하지만 실행을 하게 된다면 다음과 같은 오류가 발생할 것입니다.

 

이 오류의 원인은 flask는 기본적으로 app.py를 실행하도록 구성이 되어 있기 때문입니다. 따라서 pybo.py를 app.py로 바꿔주거나 FLASK_APP 환경변수를 pybo.py로 변경해줄 수 있습니다.

 

FLASK_APP 환경 변수를 변경하는 방법은 다음과 같습니다.

set FLASK_APP=파일명

이 때 파일명에 있는 확자명은 빼고 작성을 해줍니다.

 

위와 같이 변경해주고 실행하게 되면 다음과 같이 출력되게 됩니다.


  • 오류 2

 

잘 실행이 되었을 수도 있지만 이번에는 이 오류가 발생할 수 있습니다. 바로 pybo를 찾을 수 없다는 오류 메시지인데요. 이럴 때에는 지금 프롬프트 경로가 myproject에 잘 있는지 확인하고 경로가 맞지 않다면 cd를 이용해 이동해주면 해결됩니다. 그게 아니라면 파일 이름이나 FLASK_APP 설정을 다시한번 확인해주세요.


  • 실행하기

 

이 오류들을 해결했다면 다음과 같이 출력될 것입니다.

플라스크가 실행되었습니다. 현재 pybo로 실행중이며 디버그(버그를 잡는 행위)는 하지 않고 'http://127.0.0.1:5000' 이라는 경로에서 서비스가 작동되고 있다고 합니다. 이 때 해당 경로를 복사해서 이동하거나 'http://localhost:5000/'를 입력해서 진행할 수 있습니다.

 

경로에 진입하면 다음과 같이 출력될 것이고, vscode에는 로그가 출력될 것입니다.

 

이러한 방식으로 플라스크를 실행해서 코드를 시각화할 수 있습니다. 하지만 이 또한 매번 실행마다 FLASK_APP을 변경해줘야 한다는 단점이 있습니다.


 

배치 파일 설정하기

한가지 팁을 드리자면 "매번 실행해야한다." = "자동화 시킬 수 있다." 입니다. 꼭 이러한 예시가 아니더라도 또, 파이썬에만 국한되지 않고 매번 반복하는 업무는 코드를 통해 자동화 시켜 업무 효율을 증가시킬 수 있다는 것입니다. 여기에서는 FLASK_APP 설정을 자동화 해봅시다. 복사하기 쉽게 밑에 글자로 적어두겠습니다. 해당 경로는 자신이 작업을 진행할 경로로 설정해야 한다는 것을 명심해야합니다.

@echo off

cd D:\working_files\07_python-project\projects\project_01\myproject
@REM 여기에는 자신이 프로젝트를 작업할 디렉토리의 경로를 입력해줍니다.

set FLASK_APP=pybo
@REM FLASK_APP을 pybo로 설정하겠다.

set FLASK_DEBUG=true
@REM 디버그를 항상 실행하겠다.

D:\working_files\07_python-project\projects\venvs\myproject\Scripts\activate
@REM 이 명령줄은 가상환경에 진입하기 위한 경로와 activate를 입력한 것입니다.

드디어 기본적인 플라스크 환경 설정 작업이 완료됐습니다. 다음 포스팅부터는 본격적으로 플라스크에 대해 다뤄보도록 하겠습니다.

반응형
반응형

목차

  1. 프로젝트 디렉토리 생성
  2. 위 과정을 간단하게 만들기

프로젝트 디렉토리 생성

이전에 venvs를 생성했던 Projects 디렉토리에 다른 프로젝트 디렉토리를 생성해보겠습니다. 이렇게 또 다시 디렉토리를 생성하는 이유는 앞으로 프로젝트를 진행하다 보면 여러 프로젝트를 진행하게 될텐데 이러한 방식으로 구분을 해주는 것이 관리하기가 편하기 때문입니다. 당연한 이야기를 한것이 아닌가 싶지만 각설하고 프로젝트를 생성해봅시다.

 

1. 프로젝트 디렉토리 생성

 

vscode에서 버튼을 클릭해서 디렉토리를 만들 수 있습니다.

혹은 다음과 같이 명령어를 통해 디렉토리를 생성할 수 있습니다.

 

2. 프로젝트를 진행할 디렉토리로 이동: cd 명령어를 통해 프로젝트를 진행할 디렉토리로 진입해줍니다.

 

3. 가상 환경 진입하기
이전에는 진입하기 위해 해당 디렉토리까지 cd를 통해 이동하고 activate를 입력했었습니다. 하지만 경로와 함께 입력한다면 굳이 cd로 이동할 필요가 없습니다. 저는 경로가 복잡하다보니 코드가 이렇게 길어졌는데 이처럼 다른 디렉토리에서 이렇게 명령어를 실행할 수 있습니다. 아래 사진에는 ""가 없는데 이렇게 사용하면 오류가 발생하니 꼭 맨 앞과 뒤에 "를 붙여주시기 바랍니다.

 

4. 플라스크 프로젝트를 담을 디렉토리 생성

현재 있는 디렉토리에서 바로 myproject 디렉토리를 생성하고 이동해줍니다. venv에서 생성했던 것과는 다르니 헷갈리지 않도록 주의해야합니다.


위 과정을 간단하게 만들기

매번 이렇게 가상환경에 진입한다면 정말 불편할 것입니다. 때문에 간단하게 만들어주는 작업을 진행해보도록 하겠습니다. 이를 위해 배치 파일을 이용할 텐데, 배치 파일이란 Windows 운영 체제에서 일반적으로 사용되는 스크립트 파일 유형입니다. 배치 파일에는 명령줄 인터프리터(일반적으로 명령 프롬프트 또는 PowerShell)에 의해 순서대로 실행되는 일련의 명령이 포함되어 있습니다. 배치 파일의 파일 확장자는 ".bat" 또는 ".cmd"입니다.

 

가상환경을 생성하기 위해 만들었던 venv 디렉토리에 "myproject.cmd" 라는 배치 파일을 생성해 간단하게 만들어 보겠습니다. 명령어를 이용해도 좋고 vscode ui를 통해 바로 생성하거나 디렉토리에 직접 들어가 생생해도 좋습니다. 편한 방법으로 만들면 됩니다.

 

이제 간단하게 명령어를 입력해 줄텐데 다음과 같습니다.


배치 파일을 어느 명령 프롬포트에서나 사용할 수 있도록 만들어주기

배치 파일을 원활하게 실행하도록 하기위해 venv 디렉토리를 시스템 환경 변수 PATH에 추가해주는 과정입니다.

 

1. Windows키 + R을 눌러 '실행'(run)을 열어줍니다. 그리고 다음 이미지처럼 sysdm.cpl을 입력하고 확인(혹은 엔터)를 눌러줍니다. 이 명령어는 시스템 속성에 들어가는 명령어입니다.

 

2. 환경 변수 설정에 접속해줍니다.

 

3. PATH 변수를 편집에 접속합니다.

 

4. venvs 디렉토리 경로를 추가해주고 확인을 눌러 빠져나옵니다.

 

5. 이 경로가 잘 적용되었는지 확인하기 위해 명령 프롬포트에서 set path를 입력해봅니다. 이 때 명령 프롬포트를 새로 열어주어야 적용이 되기 때문에 위 과정을 마치고 프롬포트도 껐다가 다시 켜줍니다.

잘 추가된 것을 확인할 수 있습니다.

6. myproject 배치 파일 실행하기

이제 명령 프롬포트 어디에서든 myproject를 입력하면 venvs 디렉토리 안에서 myproject라는 이름을 찾아 실행하게 됩니다.

 

  • 오류가 뜬다면?
    이 작업을 할 때 유의할 점은 경로안에 공백이 있으면 실행이 안된다는 것입니다. 위에서 설명했던 경로에는 공백이 있어 명령어를 실행하면 "D:\Working 은 실행할 수 없는..." 이러한 형식의 문구가 출력되는데 이유는 띄어쓰기로 인해 그 전까지만 명령어로 받아들였기 때문으로 추측됩니다. 때문에 여백을 언더바(_)로 대체하여 작성하였고 이제 잘 작동되는 것을 확인할 수 있었습니다.

 

반응형
반응형

목차

  1. Python 가상환경
  2. 가상 환경을 따로 생성하는 이유
  3. venv를 통해 가상환경 생성하기
  4. 가상 환경에 진입하기
    • mac OS에서 가상환경 진입하기
  5. 플라스크 모듈 다운로드하기

Python 가상환경

Python 가상 환경은 자체 라이브러리 및 종속성 세트와 함께 특정 Python 설치가 포함된 독립된 디렉토리입니다. 이를 통해 서로 간섭하지 않고 각각 고유한 버전의 Python과 설치된 패키지가 있는 서로 다른 프로젝트에 대해 격리된 환경을 만들 수 있습니다.

  • Python 가상 환경의 주요 특징
    1. 격리
      가상 환경은 특정 프로젝트에 특정한 패키지 및 종속성을 설치할 수 있는 샌드박스 환경을 제공합니다. 이러한 격리를 통해 한 가상 환경에 설치된 패키지가 다른 가상 환경의 패키지와 충돌하지 않도록 하여 종속성을 보다 효과적으로 관리할 수 있습니다.

    2. 패키지 관리
      가상 환경을 사용하면 프로젝트에 필요한 패키지와 라이브러리를 쉽게 관리할 수 있습니다. 글로벌 Python 설치 또는 다른 프로젝트에 영향을 주지 않고 패키지를 설치, 업그레이드 및 제거할 수 있습니다. 따라서 프로젝트별 종속성을 더 쉽게 유지 관리할 수 있습니다.

    3. 버전 관리
      가상 환경을 사용하면 특정 프로젝트에 사용할 Python 버전을 지정할 수 있습니다. 이 기능은 특정 Python 버전이 필요한 프로젝트에서 작업할 때 유용하며, 여러 개발 환경 간에 호환성과 일관성을 보장합니다.

    4. 이식성
      Python 가상 환경은 이식성이 뛰어나 한 머신에서 환경을 생성한 후 다른 머신에 쉽게 복제할 수 있습니다. 이는 다른 사람과 협업하거나 애플리케이션을 다른 서버 또는 호스팅 플랫폼에 배포할 때 특히 유용합니다.

    5. 활성화 및 비활성화
      가상 환경을 사용하려면 활성화해야 합니다. 활성화는 적절한 경로와 환경 변수를 설정하여 Python 인터프리터와 설치된 패키지가 해당 환경에 맞게 설정되도록 합니다. 프로젝트 작업이 끝나면 가상 환경을 비활성화하여 전역 Python 환경으로 돌아갈 수 있습니다.

    6. 도구
      Python은 가상 환경을 만들고 관리하기 위해 venv(Python 3용) 및 virtualenv(Python 2 및 3용)와 같은 기본 제공 도구를 제공합니다. 이러한 도구는 가상 환경을 설정하고 작업하는 과정을 간소화합니다.

가상 환경 사용은 프로젝트 종속성을 유지하고 재현성을 개선하며 개발자 간의 협업을 촉진하는 데 도움이 되므로 Python 개발의 모범 사례로 간주됩니다. 또한 프로젝트가 격리되고 이식 가능하며 독립적인 상태로 유지되므로 깔끔하고 관리하기 쉬운 개발 환경을 만들 수 있습니다.


가상 환경을 따로 생성하는 이유
  1. 종속성 관리
    프로젝트마다 종속성과 라이브러리 요구 사항이 다른 경우가 많습니다. 가상 환경을 사용하면 각 프로젝트마다 이러한 종속성을 개별적으로 관리할 수 있습니다. 이렇게 하면 다른 프로젝트나 글로벌 Python 환경과 충돌하지 않고 필요한 버전의 라이브러리 및 패키지를 설치할 수 있습니다.

  2. 격리 및 재현성
    가상 환경은 프로젝트에 제어되고 격리된 환경을 제공합니다. 프로젝트의 종속성을 가상 환경 내에 캡슐화하면 프로젝트가 독립적으로 유지되고 시스템 전체 Python 설치에 의존하지 않도록 할 수 있습니다. 이렇게 격리하면 다른 머신에서 프로젝트 환경을 더 쉽게 재현할 수 있어 호환성 문제를 최소화할 수 있습니다.

  3. 버전 관리
    가상 환경을 사용하면 특정 프로젝트의 Python 버전을 지정할 수 있습니다. 이는 특정 버전의 Python이 필요한 프로젝트를 작업할 때 특히 유용하며, 다양한 개발 환경과 배포 시나리오에서 프로젝트가 일관되게 실행되도록 보장합니다.

  4. 협업
    팀에서 작업할 때 각 팀원은 서로 다른 패키지 버전 또는 시스템 구성으로 각자의 개발 환경을 사용할 수 있습니다. 가상 환경을 사용하면 프로젝트의 가상 환경 구성을 공유하여 팀원들이 일관된 개발 환경을 가질 수 있습니다. 이를 통해 협업을 간소화하고 충돌을 줄이며 모든 사람이 동일한 종속성 집합으로 작업할 수 있습니다.

  5. 배포 및 프로덕션 환경
    가상 환경은 개발 종속성을 프로덕션 환경과 분리하는 데 도움이 됩니다. 배포 환경 전용 가상 환경을 만들어 프로덕션 환경이 충돌이나 호환성 문제 없이 애플리케이션을 실행하는 데 필요한 정확한 종속성을 갖도록 할 수 있습니다.

  6. 간편한 설정 및 정리
    가상 환경 생성은 간단한 프로세스이며 기본 제공 도구를 사용하여 빠르게 수행할 수 있습니다. 또한 프로젝트 또는 관련 가상 환경을 폐기하려는 경우 다른 프로젝트나 글로벌 Python 설치에 영향을 주지 않고 환경 디렉터리를 삭제하기만 하면 됩니다.

venv를 통해 가상환경 생성하기

1. 명령줄 인터페이스(예: 터미널 또는 명령 프롬프트)를 엽니다.
vscode를 사용한다면 터미널을 열어주면 됩니다. 저와 같은 경우 Python을 다룰 때 모두 아래 이미지에 보이는 디렉토리(폴더)에 다 넣어두기 때문에 해당 디렉토리에서 생성하겠습니다.


2. 가상 환경을 만들려는 디렉토리로 이동합니다.
명령 프롬포트에서 cd 명령어를 이용해서 이동가능하고 vscode를 사용한다면 디렉토리를 열 때 자동으로 선택됩니다.

3. 디렉토리를 생성하고 해당 디렉토리로 이동합니다.
위쪽 디렉토리 모양 버튼을 눌러 프로젝트 디렉토리안에 'venv' 디렉토리를 생성합니다. 자신이 원하는 경로에 생성하면 됩니다. 생성 후 cd 명령어를 이용해 해당 디렉토리로 이동합니다.


4. 명령어를 통해 가상환경을 생성해줍니다.

python -m venv myproject

해당 명령어를 입력하면 venvs 디렉토리 아래 myproject디렉토리가 생성되고 이 안에 다음과 같이 파일이 생성됩니다. 해당 명령어는 venv 모듈을 사용할 것인데 이름은 myprojeect로 하겠다는 뜻입니다.

이렇게 myproject라는 가상환경이 생성 되었습니다. 하지만 바로 사용은 불가능하고 가상 환경에 진입해주어야 합니다.


가상 환경에 진입하기


1. 가상환경에 진입하기 위해 가상환경 디렉토리 안에 있는 Scripts 디렉토리로 이동해줍니다.


2. 활성화 명령어를 입력해줍니다.

activate

 

3. 가상 환경 진입 완료 시 아래 사진처럼 앞에 가상 환경 이름이 같이 출력됩니다.

 

4. 가상 환경에서 빠져 나올 때는 deactivate를 입력해주면 됩니다.

 


플라스크 모듈 다운로드하기

플라스크를 사용하기 위해서는 플라스크 모듈을 다운로드 받아야 합니다.

 

1. 가상 환경 진입하기

 

2. 다운로드 명령어 입력하기

pip install flask


  • mac OS에서 가상환경 진입하기

venvs 디렉터리(예:/Users/pahkey/venvs)에서 다음의 명령을 수행하면 가상환경으로 진입할수 있습니다.

pahkey@mymac venvs % cd myproject/bin
pahkey@mymac bin % source activate
(myproject) pahkey@mymac bin %

현재 진입한 가상 환경에서 벗어나려면 deactivate라는 명령을 실행하면 됩니다.

(myproject) pahkey@mymac bin % deactivate
pahkey@mymac bin %

저는 이미 다운로드 받아져 있어서 다운로드가 되지 않고 버전 확인만 진행된 것 같습니다. 다음과 같이 업그래이드하라는 경고가 출력된다면 python... --upgrade 부분을 복사해 프롬포트에 붙여넣기해 입력해줍니다.

이렇게 정말로 플라스크를 사용할 준비가 되었습니다! 

반응형
반응형

목차

  1. 플라스크(Flask)
  2. 플라스크 사용을 위한 툴 다운로드

플라스크(Flask)

플라스크는 파이썬으로 작성된 마이크로 웹 프레임워크입니다. 2010년에 Armin Ronacher가 오픈 소스 프로젝트로 만들었습니다. Flask는 웹 애플리케이션을 구축하는 데 필요한 핵심 기능을 제공하는 데 중점을 둔 단순하고 미니멀한 디자인으로 유명합니다. 특정 도구나 라이브러리를 강요하지 않는다는 점에서 '마이크로'라는 원칙을 따르며, 개발자가 원하는 구성 요소를 선택하고 통합할 수 있습니다.

특징

  1. 가볍고 쉽게 시작할 수 있습니다
    Flask는 가볍고 코드베이스가 작도록 설계되었습니다. 간단하고 직관적인 API를 갖추고 있어 개발자가 웹 애플리케이션 구축을 빠르게 시작할 수 있습니다.

  2. 라우팅 및 URL 매핑
    Flask는 URL을 Python 코드의 함수나 메서드에 매핑할 수 있는 라우팅 메커니즘을 제공합니다. 이를 통해 다양한 URL과 HTTP 메서드(예: GET, POST)를 처리하고 요청에 따라 적절한 코드를 실행하는 데 도움이 됩니다.

  3. 템플릿 엔진
    플라스크는 진자2와 같은 템플릿 엔진 사용을 지원하여 프레젠테이션 로직과 애플리케이션 로직을 분리합니다. 템플릿 엔진은 HTML 템플릿 내에 Python 코드를 삽입할 수 있게 함으로써 HTML 페이지를 동적으로 생성할 수 있게 해줍니다.

  4. HTTP 요청 및 응답 처리
    플라스크는 HTTP 요청 및 응답 처리를 간소화합니다. 요청 데이터에 쉽게 액세스하고, 양식 제출, 파일 업로드, 쿠키 처리를 지원하며, 다양한 상태 코드, 헤더, 콘텐츠 유형이 포함된 HTTP 응답을 생성할 수 있습니다.

  5. 확장성
    플라스크는 개발자가 확장을 통해 기능을 추가할 수 있는 모듈식 설계를 갖추고 있습니다. 데이터베이스 통합, 사용자 인증, 캐싱, API 개발 도구 등과 같은 추가 기능을 제공하는 풍부한 Flask 확장 프로그램 에코시스템이 있습니다.

  6. 테스트 지원
    Flask는 웹 애플리케이션 테스트를 위한 기본 지원을 제공합니다. 여기에는 HTTP 요청을 시뮬레이션하고 응답을 검사할 수 있는 테스트 클라이언트가 포함되어 있어 애플리케이션에 대한 테스트 케이스를 더 쉽게 작성할 수 있습니다.

  7. 개발 서버 및 디버깅
    Flask에는 개발 서버가 내장되어 있어 개발 단계에서 애플리케이션을 실행하고 테스트할 수 있습니다. 또한 코드의 오류를 식별하고 수정하는 데 도움이 되는 편리한 디버거를 제공합니다.

플라스크는 단순성, 유연성, 방대한 문서로 인해 개발자들 사이에서 Python을 사용해 웹 애플리케이션과 API를 구축하는 데 널리 사용되고 있습니다. 개발자가 필요에 따라 애플리케이션을 사용자 정의하고 확장할 수 있는 동시에 탄탄한 기반을 제공합니다.


플라스크 사용을 위한 툴 다운로드

플라스크를 사용하기 위해 기반이 되는 파이썬과 좀 더 편하게 사용하기 위한 vscode를 다운로드 합니다. 이에 대한 내용은 아래 페이지에 작성되어 있습니다.

 

 

[Python] 파이썬 다운로드

다음은 파이썬 홈페이지 이다. Welcome to Python.org The official home of the Python Programming Language www.python.org

easyitwanner.tistory.com

 

[Python] 코드 제작을 더 쉽게 하기 위한 vscode 다운로드

다운로드 페이지 Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform

easyitwanner.tistory.com

 

이렇게 다운로드를 마쳤다면 플라스크를 사용할 준비가 되었습니다. 분량이 애매해서 이번 포스팅은 여기서 마치고 다음 포스팅에서 가상환경에 대해 다루고 플라스크 설치까지 진행해보곘습니다.

반응형