[flask 기초3] jinja, render_template
본문 바로가기

Backend

[flask 기초3] jinja, render_template

추가 예시 1

<img src='/api/v2.0/qr_image/user/{{row.qr_uuid}}' alt="">

추가 예시2

세션에서 가져올때

{% if session.get('member_no') != 0 %}
{% endif %}

 

지난시간에 이어서..

진자는 flask설치시 자동으로 들어있다. 플라스크가 제공해주는 함수중 render_template를 사용해서

실제 html폴더를 보여줄수있다.

# 따로설치가 필요없는 sqlite3를 사용하려면 파일만 지정해주기때문에 os필요
import os

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy


# 현재경로를 프로젝트 절대경로로 사용
basedir = os.path.abspath(os.path.dirname(__file__))
dbfile = os.path.join(basedir, 'db.sqlite')
app = Flask(__name__)
#내가 사용할 데이터베이스 URI
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + dbfile
#요청이 끝날때마다 커밋한다.->db반영
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
#버전상관없게 처리
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

# # db클래스만들기(test)
# class Test(db.Model):
# 	__tablename__ = 'test_table'
# 	id = db.Column(db.Integer, primary_key = True)
# 	name = db.Column(db.String(32), unique=True)

# #db생성
# db.create_all()

#app.py를 실행하면 db에 필요한것들은 sqlalchemy가 다해줌~ db.sqlite만들어짐

app = Flask(__name__)

@app.route('/')
def hello():
	return render_template('hello.html')

컨트롤러랑 모델이 지금 같이있어서 나중에 분리해야함!

templates는 따로 폴더를 만들어 안에 html파일을 넣어둔다.(view역할)

 

 

from flask import Flask, render_template

app = Flask(__name__)

# @app.route('/')
# @app.route('/home')
# def home():
#     return "Hello world"

@app.route('/user')
def user():
    return "hi user!"

# 동적 URL을 다루는 방법 <variable_name>, <converter : variable_name>이용, int는 뷰함수에 int로 변환되어 전달됨.
# @app.route('/user/<user_name>/<int:user_id>')
# def user(user_name, user_id):
#     return f'hello, {user_name}({user_id})!'

# return html파일을 작성할것이 아니라 일관된 구조와 기능을 가진 템플릿활용 -> Jinja2(템플릿엔진으로
# 어플리케이션내 변수와 반복문 조건문등을 포함하는 HTML파일을 렌더링할수있다.)
# 반드시 templates라는 폴더안에 넣어야함

#이 템플릿에서 변수를 사용할때는 {{ 변수명 }}, {{ 변수명 | 필터 }}
#이 템플릿에서 조건문을 사용할때는 {% if문 %}{% endif %}
#이 템플릿에서 반복문을 사용할때는 {% for %}{% endfor %}
#참고: http: // hleecaster.com/flask-jinja2/

@app.route('/')
def yujin():
    return render_template("index.html")

if __name__ == '__main__':
    app.run(debug=True)
반응형

'Backend' 카테고리의 다른 글

flask db 연동(sqlite3)  (0) 2021.05.09
flask file download  (0) 2021.05.03
Flask localhost 임의 IP, Port 설정  (0) 2021.04.22
flask 프로젝트생성  (0) 2021.04.20
flask semeitic-ui가 적용이안된다면?  (0) 2021.04.20