【snake】Section: 7 Blueprints and Jinja 2 Templates
Creating Our First Flask Blueprint
早速、blueprintを設定した場合のapp.pyファイルを確認してみる。
@app.route('/')で登録されていたモノが
app.register_blueprint(page)に変わっている。
ブループリントを使う場合は、フォルダー内もかも変わる。
snakeeyesフォルダーにblueprintフォルダーが出来る。
snakeeyesフォルダーの中にblueprintsフォルダーができる。
更にその中にpageフォルダーを作り、その中にtemlatesフォルダーを作る。
pageフォルダーにviews.pyを作る。
Section6では、app.pyに直接 @app.route('/') で記載していた。
しかし、blueprintを使う場合は、app.pyにrouteをregisterして、
views.pyにrouteを記載するやり方にする。
最後に init.pyファイルを設定することでapp.pyがインポート出来るようになる。
このblueprintのやり方は他のフレームワークで同じ考え方である。
JangoであればMTVパターン (Mode-Template-View の略)
RailsであればMVCパターン
Modelは、データベース
Templateは、html
Viewは、routeなどrender
ブループリントをまとめると、つまり、
①app.pyでblueprint(page)とregisterする
②次にフォルダー作る。snakeeyes/blueprints/page/tmplates
③views.py作る。@routesとか書く
④init.pyにpageを記載する。
Creating the Home Page
#template/layoutにあるbase.htmを見る。
注目すべきは、
・{% block title %}{% endblock %}
・{% block body %}{% endblock %}
ここで#templates/page/home.htmlを確認する。
1行目の {% extends 'layouts/base.html' %} でbase.htmlへ飛ばす準備をして。
そして、{% block body %} 以降を飛ばす。
そのほかにも、url_for( )というのがある。これは、flaskの書き方である。#templates/page/terms.htmlへ飛べるようになっている。
また、以下のようにすることでソースコードを取得する。
src="{{ url_for('static', filename='scripts/vendor/bootstrap.min.js') }}">
次にfooterぶぶのurl for function をみて見る。
urlをそのまま書くのではなく、
blueprintのpageからviewに行ってrouteを通してprivacページに飛ぶようにしている。
Adding a Few Additional Pages
Privacy policy のページに行くとhttp://None . となっている。これは<a href=””が設定されていないからである。 実際のコードは以下のようになっている。
ポリシーは設定しておくのが大事。
最後に
データをたくさん消費するので最後に消去しなければならない。
$ docker-compose stop $ docker-compose rm -f