LoginSignup
2
0

More than 3 years have passed since last update.

Home画面の作成

Last updated at Posted at 2021-01-11

はじめに

Flaskを使用して1からアプリケーションを作り、必要な技術を学んでいただけるようにまとめています。

Home画面の作成

MTV フレームワークとは

Flaskは、大きく分けて、Model、Template、View、の3つからなる、MTVフレームワークで構成されている。

例えばユーザからリクエストがあったとき、Flaskでは以下のように処理されます。

1. ユーザがあるURLに大してアクセス(リクエスト)する
2. アクセスされたURLを読み取り、あらかじめ定義された、URLに紐づいた処理を実行する。(View)
3. 処理の中で必要に応じて、モデルと呼ばれるオブジェクトを通してデータベースにアクセスする(Model)
4. 処理の最後にユーザに表示するHTMLなどのテンプレートを返す(Template)
5. ユーザは返されたHTMLファイルを閲覧する

これまではリクエストに大して文字列を返していましたが、実際にユーザがWebブラウザで閲覧するのはhtmlファイルです。
そこで、htmlファイルを返してあげるようにしてあげます。

htmlファイルのレンダリング

htmlファイルをブラウザに渡す

adapters/controllers/entry.py
from src import app
from flask import render_template

@app.route('/')
def index():
    return render_template('index.html')
  • templateを指定していないが、これはflaskではtemplatesディレクトリ以下に自動でhtmlファイルがあると認識してくれるためです。
  • flaskではhtmlファイルはtemplatesディレクトリの中に作成するということは覚えておいてください。

Templetesファイルの作成

srcディレクトリにtemplatesディレクトリを作成します。templatesディレクトリの中にentriesディレクトリを作成し、index.htmlファイルを作成します。

  • Bootstrapによるデザイン 今回はCSSのライブラリである、Bootstrapを使用してhtmlファイルの見た目をよくしようかと思います。

Bootstrapをインポート文です。
以下の4行を追加します。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
templates/entries/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" 
          href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
          integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
          crossorigin="anonymous">
    <title>Flask App</title>
</head>
<body>
    <div class="container">
        <nav class="navbar navbar-expand-lg navbar-lighy bg-light">
            <a class="navbar-brand" href="/">Flask Blog</a>
        </nav>
    </div>

    <div class="blog-body">
        投稿がありません。
    </div>

    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"
            integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
            crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
            integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" 
            crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" 
            integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" 
            crossorigin="anonymous"></script>
</body>
</html>

アプリを立ち上げると以下のようになっていると思います。
スクリーンショット 2021-01-01 12.15.11.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0