: python 웹 프레임워크
간단하면서도 유연한 웹 애플리케이션 개발을 위한 도구로, 웹 요청을 처리하고 응답을 생성하는 데 사용. Flask는 WSGI(Web Server Gateway Interface)를 준수하며, 이를 통해 웹 서버와 통신하여 HTTP 요청을 처리하고 동적인 웹 페이지를 생성하는 데 적합
3Dmol 오픈소스에서 제공하는 sample 코드를 실행해기 위해 'http-server'를 사용한다.
http-server는 Node.js 기반의 간단한 정적 파일 웹 서버로 동적인 기능이나 서버 사이드 언어를 사용하는 기능은 제공하지 않으므로 flask 서버로 구축이 본 연구에 적합
가상 환경 생성
- python -m venv myenv
가상 환경 활성화 (window)
- source myenv/Scripts/activate
가상 환경에 flask 설치
- pip install flask
└── web.py
├── static
│ ├── build
│ ├── css
│ └── complex
└── templates
└── index.html
※ 디렉터리 구조 확인 방법 > 참고
import os
from flask import Flask, render_template, url_for
app = Flask(__name__, static_folder='static')
# /{PDB ID} 경로 요청
@app.route('/<pdb_id>')
def viewer1(pdb_id):
pdb_filename = f'{pdb_id.upper()}.pdb'
pdb_url = url_for('static', filename='pdbs/' + pdb_filename)
# index.html 템플릿 렌더링 및 'data-href'변수에 pdb_url 값을 전달하며 반환
return render_template('index.html', data_href=pdb_url)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
① viewer의 'data-href' 속성 값에 pdb 경로가 URL에 따라 동적으로 적용
② 자세한 코드는 Github 참고
※ Github
<div id="viewercontainer" class="body row">
<div class="table">
<div class="tablerow">
<div id='viewer1' class='viewer_3Dmoljs' data-href='{{ data_href }}' data-backgroundcolor='0xffffff' data-select='{"hetflag":false}' data-style='{"cartoon":{"color":"spectrum"}}'></div>
</div>
</div>
① python web.py 실행
② /8HVP_B_I 접속
③ /6TMI_G_C 접속
④ PDB ID에 따라 동적으로 뷰어 생성