ちょっとFlaskというPythonのフレームワークを触る必要が出てきそうなのでチュートリアルやってみました。というただの日記。

動機


下記のあたりが動機です。

  • 実作業に入る前に把握しておきたい
  • GWの課題の一つとして
  • Python自体あんまり知らないのでフレームワーク触りながら覚えれたらいいかなという期待
    • Pythonは公式ドキュメントの半分くらいはやったけどほとんど覚えてない
  • Webフレームワークの知見を増やしておきたい
  • チュートリアル短そう
    • 超大事

環境


Pythonの環境構築をどうするか(バージョン切り替えできるようにするかなど)迷ったのですが、自分のPCでそんなに使うことは無いと思うので、切り替えとかは考えずにインストーラをダウンロードしてきて構築しました。

  • Python: 3.8.2
  • Flask: 1.1.2

Flaskについて


WSGI(PythonのWebアプリケーションの仕様)にのっとったWebアプリケーションであるWerkzeugと、Jinjaテンプレートエンジン(テンプレートエンジンは変更できるらしい)を用いた軽量Webアプリケーションフレームワーク。FlaskもWerkzeugもJinjaも同じPallets Projectsのプロダクト。

Flaskはフラスコ瓶の意味らしけど、トップのロゴが唐辛子にしか見えない…

チュートリアルについて


Tutorial

Flaskrという名前のシンプルなブログを作っていく。内容は下記のようなもの。半日くらいあればできる分量。

  • CRUD
  • テンプレートエンジンを使用した画面表示
  • パッケージング
  • テスト
  • 本番環境での構築

DBはSQLiteなので別途構築する必要ない。Python準備してflaskインストールすれば開始できる。

詰まったところなど


あまり詰まるようなところは無いけれども、一か所だけpytestでテスト実行するとモジュールがないと怒られてしばらく悩んだ。

1
2
3
tests\conftest.py:5: in <module>
from flaskr import create_app
E ModuleNotFoundError: No module named 'flaskr'

下記にある通り、その前のパッケージ項でpip install -e .でローカルにパッケージングしておかないといけないようだ。ということはこれコード変更したらテストの都度パッケージングしないといかんのだろうか??

[Tutorial] Pytest don’t find flaskr package

感想


以下、チュートリアルやった感想

  • 冒頭にPythonをある程度触ったことある想定とあるが、なくてもまあ問題ない
  • Pythonの知らないアレコレも調べるきっかけとなったので良かったのでは
    • __name__など
    • ()を使用したimportの改行
  • 基本的に右クリックでページごと翻訳して進めたけど翻訳だと文脈がおかしくて理解できないようなところとか出てくる
  • はじめは g がなにかわからなかったが、これは各リクエスト毎に使用できるグローバル変数みたいなもの
    • チュートリアルではdbのインスタンス取得などに使用している
    • テンプレートエンジンにも渡せる

その他


  • 普段ほとんど触らない言語だと環境構築が(心の)ハードル高くて厳しい
  • Windowsで環境構築やっぱり手間
  • こないだ27インチのモニターにしたけど、もっとデカいモニターにしても良かったかもしれない
    • 画面を2分割しても余裕があるのでドキュメントみながらコード書きやすい
    • 縦はこれ以上要らないけど、横はもう少し幅があっても良いと思った
  • Werkzeugのチュートリアルもやっておきたい

おわり。