Flask 사용법

Flask는 Python으로 간단하고 빠르게 웹 애플리케이션을 만들 수 있는 마이크로 웹 프레임워크입니다. Flask의 기본적인 사용법을 단계별로 설명드리겠습니다.

1. Flask 기본 설정

Flask 애플리케이션을 생성하려면 먼저 Flask 라이브러리를 설치해야 합니다. 설치가 끝나면 다음과 같이 간단한 웹 서버를 구성할 수 있습니다.

# app.py
from flask import Flask

app = Flask(__name__)

@app.route(“/”)
def home():
return “Hello, Flask!”

if __name__ == “__main__”:
app.run(debug=True)


  • app = Flask(__name__): Flask 애플리케이션 객체를 만듭니다.
  • @app.route("/"): 경로 설정으로, "/" URL로 접속 시 home() 함수가 실행됩니다.
  • app.run(debug=True): Flask 서버를 시작합니다.

2. 라우팅

Flask에서 URL을 관리하려면 라우팅을 설정합니다. 다양한 경로를 @app.route() 데코레이터로 설정할 수 있으며, 동적 URL도 설정할 수 있습니다.

@app.route(“/hello”)
def hello():
return “Hello, World!”

@app.route(“/user/<username>”)
def user_profile(username):
return f”User: {username}”


  • /hello 경로에 접속 시 “Hello, World!”를 반환합니다.
  • /user/<username> 경로는 username을 매개변수로 받아 동적으로 사용자 페이지를 표시합니다.

3. 템플릿 사용

HTML을 직접 반환하는 대신 Jinja2 템플릿을 사용하여 HTML 파일을 렌더링할 수 있습니다. 템플릿 파일은 프로젝트의 templates 폴더에 위치시킵니다.

프로젝트 구조

my_flask_app/
├── app.py
└── templates/
└── index.html

템플릿 파일 (templates/index.html)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask App</title>
</head>
<body>
<h1>Welcome, {{ name }}!</h1>
</body>
</html>

Flask에서 템플릿 렌더링

from flask import render_template

@app.route(“/welcome/<name>”)
def welcome(name):
return render_template(“index.html”, name=name)

  • render_template() 함수는 templates/ 폴더에서 지정한 템플릿 파일을 렌더링합니다.
  • 템플릿 파일에서 {{ name }}을 사용해 Python 데이터를 HTML로 전달할 수 있습니다.

4. HTTP 메서드 처리

Flask에서는 GET, POST와 같은 HTTP 메서드에 따라 다른 처리를 할 수 있습니다. POST 메서드를 사용하여 데이터를 제출하거나 요청을 처리하는 기능을 만들어보겠습니다.

from flask import request

@app.route(“/submit”, methods=[“GET”, “POST”])
def submit():
if request.method == “POST”:
username = request.form[“username”] return f”Hello, {username}!”
return ”’
<form method=”post”>
Username: <input type=”text” name=”username”>
<input type=”submit” value=”Submit”>
</form>
”’

  • request 객체를 사용하여 GET 또는 POST 요청에서 데이터를 가져옵니다.
  • request.form은 HTML 폼 데이터에 접근합니다.

5. 리다이렉트와 URL 생성

사용자를 다른 페이지로 리다이렉트하거나, URL을 생성할 때 redirect()url_for() 함수를 사용할 수 있습니다.

from flask import redirect, url_for

@app.route(“/”)
def index():
return redirect(url_for(“hello”))

@app.route(“/hello”)
def hello():
return “Hello, redirected!”

  • url_for("함수명")을 사용하여 해당 함수로 연결된 URL을 생성하고 redirect()로 해당 경로로 리다이렉트할 수 있습니다.

6. 플라스크에서 데이터베이스 연동

Flask는 데이터베이스 연동 시 Flask-SQLAlchemy를 주로 사용합니다. SQLAlchemy는 Python의 ORM 라이브러리로, 데이터베이스와 쉽게 연동할 수 있습니다.

bash
pip install Flask-SQLAlchemy

app.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config[“SQLALCHEMY_DATABASE_URI”] = “sqlite:///test.db” # 데이터베이스 경로 설정
db = SQLAlchemy(app)

# 데이터베이스 모델 정의
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)

@app.route(“/add_user/<name>”)
def add_user(name):
new_user = User(name=name)
db.session.add(new_user)
db.session.commit()
return f”User {name} added.”

if __name__ == “__main__”:
db.create_all() # 테이블 생성
app.run(debug=True)


  • db.create_all()을 통해 모델에 기반한 데이터베이스 테이블을 생성합니다.
  • SQLAlchemy를 사용하여 데이터를 삽입, 조회, 업데이트, 삭제할 수 있습니다.

7. Flask 실행

Flask 애플리케이션을 실행하려면 다음과 같이 실행할 수 있습니다.

bash
export FLASK_APP=app.py
flask run

또는 Python으로 직접 실행할 수도 있습니다.

python app.py

요약

Flask를 사용하여 기본적인 웹 애플리케이션을 구축할 수 있습니다. 핵심 개념으로는 라우팅, 템플릿 렌더링, HTTP 요청 처리, 리다이렉트와 URL 생성 등이 있으며, SQLAlchemy와 같은 ORM을 활용하여 데이터베이스 연동도 할 수 있습니다. Flask는 필요에 따라 확장성을 높일 수 있어, 소규모 프로젝트에서 대규모 프로젝트로 확장할 때도 매우 유용한 프레임워크입니다.

우분투에서 Flask 설치

Ubuntu에서 Flask를 설치하는 방법을 안내드리겠습니다. Flask는 Python 패키지 관리자인 pip을 통해 간편하게 설치할 수 있으며, 가상 환경을 사용하는 것이 권장됩니다.

1. Python과 pip 설치 확인

먼저 Python과 pip이 설치되어 있는지 확인합니다. Ubuntu 20.04 이상 버전에서는 Python3가 기본 설치되어 있지만, 그렇지 않은 경우 아래와 같이 설치할 수 있습니다.

bash
sudo apt update
sudo apt install python3 python3-pip

설치 확인:

bash
python3 --version
pip3 --version

2. Python 가상 환경 만들기

가상 환경을 만들어 Python 패키지들이 시스템에 영향을 주지 않도록 하는 것이 좋습니다. 가상 환경을 사용하면 프로젝트마다 독립적으로 패키지를 관리할 수 있습니다.

bash
sudo apt install python3-venv # 가상 환경 패키지 설치 (필요한 경우)
python3 -m venv my_flask_env # my_flask_env라는 가상 환경 생성

가상 환경을 활성화합니다.

bash
source my_flask_env/bin/activate

활성화가 완료되면 (my_flask_env)라는 프롬프트가 표시됩니다.

3. Flask 설치

가상 환경이 활성화된 상태에서 Flask를 설치합니다.

bash
pip install Flask

설치가 완료되면 Flask 버전을 확인하여 정상 설치되었는지 확인할 수 있습니다.

bash
flask --version

4. 간단한 Flask 애플리케이션 실행

Flask 설치를 확인하기 위해 간단한 애플리케이션을 만들어 봅니다.

app.py라는 파일을 생성하고 다음과 같이 작성합니다.

from flask import Flask

app = Flask(__name__)

@app.route(“/”)
def hello():
return “Hello, Flask on Ubuntu!”

if __name__ == “__main__”:
app.run()

5.Flask 애플리케이션 실행

FLASK_APP 환경 변수를 설정하고 Flask 애플리케이션을 실행합니다.

bash
export FLASK_APP=app.py
flask run

이 명령어로 애플리케이션이 실행되며, 기본적으로 http://127.0.0.1:5000에서 Flask 애플리케이션을 확인할 수 있습니다.

이제 Ubuntu에서 Flask가 정상적으로 설치되고 실행된 것을 확인할 수 있습니다.

파이썬 Flask 설명서

Flask는 Python으로 작성된 가볍고 유연한 웹 프레임워크로, 단순한 웹 사이트에서부터 복잡한 웹 애플리케이션까지 손쉽게 구축할 수 있도록 해줍니다. Flask는 최소한의 코드로 웹 애플리케이션을 만들 수 있는 마이크로 프레임워크로, 다음과 같은 특징을 가집니다.

  • 간결성: 복잡한 설정이나 대규모 구조 없이 간단한 코드로 서버를 시작할 수 있습니다.
  • 확장성: 필요한 기능만 확장해서 사용할 수 있습니다.
  • Jinja2 템플릿 엔진: HTML 템플릿을 쉽게 관리하고 데이터와의 연동을 편리하게 해주는 템플릿 엔진을 제공합니다.

Flask 설치

Flask는 Python 패키지 관리자인 pip를 통해 설치할 수 있습니다.

bash
pip install Flask

기본 Flask 애플리케이션 작성

다음은 가장 간단한 Flask 애플리케이션 예제입니다.

from flask import Flask

app = Flask(__name__)

@app.route(“/”)
def hello():
return “Hello, World!”

if __name__ == “__main__”:
app.run(debug=True)


주요 설명

  • Flask 객체 생성: app = Flask(__name__)는 Flask 애플리케이션 객체를 만듭니다.
  • 라우트 설정: @app.route("/")는 URL 경로를 지정하여 특정 경로로 들어온 요청에 대해 함수를 실행합니다.
  • 서버 실행: app.run()을 통해 Flask 서버를 실행합니다.

Flask 주요 기능

1. 라우팅

라우팅은 URL과 함수를 연결하는 것으로, 다양한 URL 경로에 따라 서로 다른 페이지나 데이터를 보여줄 수 있습니다.

@app.route(“/hello”)
def hello():
return “Hello, Flask!”

@app.route(“/user/<username>”)
def show_user_profile(username):
return f”User: {username}”

2. 템플릿 렌더링

Flask는 Jinja2 템플릿 엔진을 사용하여 HTML 템플릿에 동적으로 데이터를 전달할 수 있습니다.

템플릿 파일templates/ 폴더에 작성합니다.

  • templates/index.html 예제:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Flask App</title>
    </head>
    <body>
    <h1>Hello, {{ name }}!</h1>
    </body>
    </html>

Flask에서 템플릿 렌더링:

from flask import render_template

@app.route(“/greet/<name>”)
def greet(name):
return render_template(“index.html”, name=name)

render_template() 함수는 templates/ 폴더 내의 index.html을 찾아 렌더링하며, name 변수를 템플릿으로 전달합니다.

3.요청 처리

Flask는 GET 및 POST 요청을 처리할 수 있습니다.

  • from flask import request

    @app.route(“/submit”, methods=[“GET”, “POST”])
    def submit():
    if request.method == “POST”:
    name = request.form[“name”] return f”Hello, {name}!”
    return ”’
    <form method=”post”>
    Name: <input type=”text” name=”name”>
    <input type=”submit” value=”Submit”>
    </form>

  • request 객체를 통해 POST 데이터에 접근할 수 있으며, 사용자가 제출한 데이터를 서버에서 처리할 수 있습니다.
    ”’

4. 리다이렉트 및 URL 생성

redirect()url_for() 함수를 사용하면 URL을 생성하고 리다이렉트할 수 있습니다.

from flask import redirect, url_for

@app.route(“/”)
def index():
return redirect(url_for(“hello”))

@app.route(“/hello”)
def hello():
return “Hello, Flask!”


  • url_for("hello")hello 함수가 매핑된 URL로 이동하게 합니다.

5. Flask와 데이터베이스 연동

Flask는 SQLAlchemy와 같은 ORM(Object Relational Mapping) 라이브러리를 지원하여 데이터베이스와 연동할 수 있습니다. 예를 들어, SQLite와 연동하는 간단한 코드 예시는 다음과 같습니다.

from flask_sqlalchemy import SQLAlchemy

app.config[“SQLALCHEMY_DATABASE_URI”] = “sqlite:///test.db”
db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)

@app.route(“/add_user/<name>”)
def add_user(name):
user = User(name=name)
db.session.add(user)
db.session.commit()
return f”Added user {name}.”


  • SQLAlchemy를 사용하면 Python 객체와 데이터베이스 테이블을 매핑하여 데이터 관리를 쉽게 할 수 있습니다.

6. Flask 실행

일반적으로 다음 명령어로 Flask 애플리케이션을 실행합니다.

bash
python app.py

또는 FLASK_APP 환경 변수를 설정하여 실행할 수도 있습니다.

bash
export FLASK_APP=app.py
flask run

이 명령어로 애플리케이션을 실행한 뒤, http://127.0.0.1:5000에서 접속하여 웹 애플리케이션을 테스트할 수 있습니다.

파이션과 html5 연동방법

Python과 HTML5를 연동하여 웹 애플리케이션을 만드는 방법에는 주로 FlaskDjango와 같은 Python 웹 프레임워크를 사용합니다. 여기서는 Flask를 예로 들어 설명드리겠습니다. Flask는 비교적 간단하면서도 유연하게 HTML과 연동할 수 있어 학습이나 프로젝트에 많이 사용됩니다.

1. Flask 설치

먼저, Flask를 설치해야 합니다.

bash
pip install Flask

2. Flask 앱 기본 구조 만들기

Flask 프로젝트 디렉토리를 생성하고, 필요한 파일을 설정합니다.

프로젝트 구조 예시:

my_flask_app/

├── app.py # Flask 애플리케이션 메인 파일
├── templates/ # HTML 파일들이 저장되는 폴더
│ └── index.html # 기본 HTML 파일
└── static/ # CSS, JavaScript, 이미지 등 정적 파일들이 저장되는 폴더
└── style.css # CSS 파일

3. Flask 애플리케이션 파일 (app.py)

app.py 파일을 생성하고, HTML 파일을 렌더링하는 기본 코드를 작성합니다.

from flask import Flask, render_template

app = Flask(__name__)

# HTML 페이지를 렌더링하는 라우트
@app.route(‘/’)
def home():
return render_template(‘index.html’) # templates 폴더의 index.html 파일 렌더링

if __name__ == ‘__main__’:
app.run(debug=True)


4. HTML 파일 작성 (templates/index.html)

templates 폴더에 index.html 파일을 생성하고 HTML5 문서를 작성합니다. Flask에서는 {{ }}{% %} 구문을 사용해 Python 변수를 HTML에 전달하거나, 조건문, 반복문 등을 사용할 수 있습니다.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flask and HTML5 Example</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<h1>Welcome to Flask with HTML5!</h1>
<p>{{ message }}</p> <!-- Python에서 전달된 변수 표시 -->
</body>
</html>

5. Flask에서 변수 전달하기

Flask의 render_template 함수에서 index.html로 변수를 전달해 보겠습니다.

app.py에 코드를 추가합니다.

@app.route('/')
def home():
return render_template('index.html', message="Hello from Flask!")

6. CSS 및 JavaScript 파일 추가 (static/style.css)

static 폴더에 style.css 파일을 생성하여 HTML에 스타일을 적용합니다.

/* style.css */
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
text-align: center;
padding: 50px;
}

7. 서버 실행

마지막으로 Flask 서버를 실행합니다.

bash
python app.py

웹 브라우저에서 http://127.0.0.1:5000에 접속하면 HTML5 페이지가 보입니다.

이와 같이 Python(Flask)과 HTML5를 연동하여 웹 애플리케이션을 만들 수 있습니다. CSS와 JavaScript는 static 폴더에 추가하여 HTML에서 불러올 수 있습니다.

파이션으로 웹프로그램을 만들때 mysql 서버와 연결하는 방법

Python으로 웹 프로그램을 만들 때 MySQL 서버와 연결하는 일반적인 방법은 mysql-connector-python과 같은 MySQL 커넥터 라이브러리를 사용하는 것입니다. 여기서는 Python Flask 웹 프레임워크와 MySQL 데이터베이스를 연결하여 사용하는 방법을 안내드릴게요.

1. 라이브러리 설치

먼저, mysql-connector-python 패키지를 설치해야 합니다.

bash
pip install mysql-connector-python Flask

2. MySQL 데이터베이스 설정

MySQL에서 사용할 데이터베이스와 테이블을 설정합니다. 예를 들어, mydatabase라는 데이터베이스와 users라는 테이블을 만들고 싶다면 다음과 같이 설정합니다:

sql
CREATE DATABASE mydatabase;
USE mydatabase;

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);

3. Python에서 MySQL 연결 설정

Flask 애플리케이션 파일을 생성하고 MySQL 데이터베이스에 연결해보겠습니다.

python
from flask import Flask, request, jsonify
import mysql.connector

app = Flask(__name__)

# MySQL 연결 설정
db = mysql.connector.connect(
host=”localhost”, # MySQL 서버 호스트
user=”root”, # MySQL 사용자
password=”password”, # MySQL 비밀번호
database=”mydatabase” # 연결할 데이터베이스
)

# 데이터 추가 API 예제
@app.route(‘/add_user’, methods=[‘POST’])
def add_user():
data = request.json
name = data.get(‘name’)
email = data.get(’email’)

cursor = db.cursor()
query = “INSERT INTO users (name, email) VALUES (%s, %s)”
values = (name, email)
cursor.execute(query, values)
db.commit()

return jsonify({“message”: “User added successfully!”})

# 모든 데이터 조회 API 예제
@app.route(‘/users’, methods=[‘GET’])
def get_users():
cursor = db.cursor(dictionary=True)
cursor.execute(“SELECT * FROM users”)
users = cursor.fetchall()

return jsonify(users)

if __name__ == ‘__main__’:
app.run(debug=True)


4. 실행 및 테스트

이제 서버를 실행하고 테스트해보세요:

bash
python app.py

http://localhost:5000/add_user에 POST 요청을 보내서 사용자 정보를 추가하거나, http://localhost:5000/users로 GET 요청을 보내서 저장된 사용자 정보를 조회할 수 있습니다.

이 과정이 MySQL과 연결하여 데이터를 처리하는 기본적인 웹 프로그램 구축 과정입니다.