先に進む前にディレクトリ構成をちょっと変更しておく。
ここまででBlueprintを導入してview.pyからexone.pyやdemo.pyを分離してview.pyと同階層に格納していたが、view.pyをhome.pyと改名した上でviewsディレクトリを新たに設けて、views以下にhome.py、exome.pyなどを格納することにする。
これによって生じる変更点はmanage.pyのなかで
# import app.view import app.views.home
app/__init__.pyで
# from app import demo, entry, exome from app.view import demo, entry, exome
の2点。
そのうえでview/__init__.pyを新設。中身は空でいい。
__init__.pyに何を置くかが難しいな。
画面表示もちょっとやっておこう。
基本htmlタグでどうにでもできるのだが、データベース以外の画像コンテンツや、そもそもファイルホスティングはどうするのかだが、動的に変化しないこれらのファイルはapp/staticディレクトリに置くことになるようだ。試しに画像ファイルをページに表示させるためにapp/static/imgにlogo.jpgを置いておいて、ページ上に貼り付けてみた。
index.htmlの該当箇所に
<img src="{{ url_for('static', filename='img/logo.jpg') }}">
こんな感じでimgタグで表示させる。url_forでありかを指定してやるわけだね。staticディレクトリが起点であることを教えないとimgディレクトリにブラウザがたどり着けないというわけだ。この書式を利用して、データをダウンロードするホスティングサーバも作れそうだ。
ただし、fastqにしろBAMにしろファイルサイズがかなり大きいので、このアプリのサーバ機能で配信するよりは別にftpかhttpサーバををたてて、そちらから配信したほうがいいとは思う。