파이썬 가상 환경 사용하기

파이썬에서 가상 환경은 독립된 공간에서 프로젝트의 의존성을 관리하는 데 유용하다.

가상 환경이란?

가상 환경은 시스템-wide 설치와 달리 특정 프로젝트에만 국한된 패키지 관리를 가능하게 한다.

가상 환경의 필요성

  • 여러 프로젝트 간의 패키지 충돌 방지
  • 의존성 관리의 용이성
  • 패키지 관리를 간편하게 해줌

가상 환경 생성 및 활성화

  1. 가상 환경 생성: python3 -m venv myenv
  2. 가상 환경 활성화: 윈도우에서는 myenv\Scripts\activate, 리눅스나 macOS에서는 source myenv/bin/activate

Flask와 가상 환경

Flask 프로젝트를 가상 환경에서 구성하면 의존성 관리가 쉽다.

  1. Flask 설치: 가상 환경 내에서 pip install flask
  2. 프로젝트 실행: python app.py

Flask 애플리케이션 구현 기초

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', text="Welcome to My Website!")

if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Main Page</title>
</head>
<body>
    <h1>{{ text }}</h1>
</body>
</html>

Flask 동적 라우팅

동적 라우팅을 사용하면 URL의 일부를 변수로 처리할 수 있다. 이 변수는 라우트에 연결된 함수로 전달되어 처리된다.

from flask import Flask

app = Flask(__name__)

@app.route('/user/<userId>')
def show_user_profile(userId):
    return f'User {userId}'

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

변환기 사용

Flask는 다양한 변환기를 제공하여 동적 라우팅을 더욱 강력하게 만든다. 예를 들어, 특정 타입의 변수만 받고 싶을 때 변환기를 사용할 수 있다.

@app.route('/post/<int:post_id>') # <int:post_id>는 post_id가 int형이어야 함을 지정한다.
def show_post(post_id):
    return f'Post {post_id}'

URL 빌더 사용

url_for 함수를 사용하면 동적 URL을 생성할 수 있다. 이는 URL 변경 시 코드 전체를 수정하지 않고도 유연하게 대응할 수 있게 한다.

from flask import Flask, url_for, redirect

app = Flask(__name__)

@app.route('/')
def index():
    # 'show_user_profile' 함수로 연결되는 URL로 리다이렉트
    return redirect(url_for('show_user_profile', username='wish'))

@app.route('/user/<username>')
def show_user_profile(username):
    # 사용자 이름을 화면에 출력
    return f'User {username}'

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

템플릿(Template)

Flask에서 템플릿(template)은 HTML 코드 내에 동적 데이터를 삽입하고 렌더링하는 방법을 제공한다. 템플릿을 사용하면 코드와 HTML의 분리, 재사용 가능한 컴포넌트, 조건 및 반복문의 적용 등이 가능해진다. Flask는 Jinja2라는 강력한 템플릿 엔진을 사용한다.

템플릿 기본 구조

기본적인 템플릿은 HTML과 유사하게 작성되지만, 중괄호({{ }})와 같은 특수 구문을 사용해 변수를 삽입하거나 제어 구조를 사용할 수 있다.

<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

템플릿 렌더링

템플릿을 렌더링하려면 render_template 함수를 사용하고 변수를 인자로 전달한다.

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name, title='Hello Page')

제어 구조

Jinja2 템플릿 엔진은 for 루프, if 문 등의 제어 구조를 제공한다.

<ul>
{% for user in users %}
    <li>{{ user.name }}</li>
{% endfor %}
</ul>

템플릿 상속

템플릿 상속을 사용하면 기본 레이아웃을 정의하고 여러 페이지에서 재사용할 수 있다.

<!-- base.html -->
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}
</body>
</html>
<!-- child.html -->
{% extends "base.html" %}
{% block title %}Child Page{% endblock %}
{% block content %}
    <h1>Welcome to the Child Page</h1>
{% endblock %}

템플릿은 Flask에서 웹 페이지의 동적 내용을 관리하고 재사용 가능한 구조를 만드는데 필수적인 요소다. Jinja2 엔진은 강력한 기능을 제공하며, 개발자가 효율적으로 다양한 웹 페이지를 생성할 수 있게 한다.


본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.
#정보통신산업진흥원 #NIPA #AI교육 #프로젝트 #유데미 #IT개발캠프 #개발자부트캠프 #프론트엔드 #백엔드 #AI웹개발취업캠프 #취업캠프 #개발취업캠프

0개의 댓글