プログラミング

【Python】ログイン機能を作る「Flask-Login」②

投稿日:2021年1月24日 更新日:

「ログイン機能を作る Part2」をやっていこうと思います。
今回は「flask_login」で使うページ(テンプレート)の実装をやっていきます。

「flask_login」を使ってみよう

ではまずインポートからしていきましょう。
まだ「ログイン機能を作る①」を見ていない方は下記からどうぞ。
「flask_login」について紹介しています。

①の記事はこちら。

「flask_login」をインポートしよう

from flask import Flask, render_template
from flask_login import LoginManager

テンプレートを作成しよう

基本的な使い方を知るうえで、今回は下記のテンプレート(html)を作成します。

  • ログインページ・・・ログインするページ
  • ログアウトページ・・・ログアウトするページ
  • 会員ページ・・・ログインが必要なページ
  • トップページ・・・ログインが不要なページ

この4つを作成していきます。
「html」ファイルは「templates」フォルダに入れるんですよね。

「Flaskのフォルダ構成」についてはこちら

login     
├── login.py
│  
└──templates
    └── login.html
    └── logout.html
    └── member.html
    └── top.html

現在のフォルダ構成はこんな感じです。

「Flask」と「Flask-Login」を関連付けよう

まず初めに作成するアプリと「flask_login」を関連付けます。

from flask import Flask, render_template
from flask_login import LoginManager

--------------------------------------------------------------------------------------------------------

app = Flask(__name__)

login_manager = LoginManager()
login_manager.init_app(app)
app.config['SECRET_KEY'] = "secret"

ユーザーを読み込むためのコードを記述しよう

今は特に使いませんが、ログインしているユーザーを認証するためのものになります。

from flask import Flask, render_template
from flask_login import LoginManager

app = Flask(__name__)

login_manager = LoginManager()
login_manager.init_app(app)
app.config['SECRET_KEY'] = "secret"

--------------------------------------------

@login_manager.user_loader

--------------------------------------------

それぞれの@app.routeを設定する

4つのページを実装していきます。

from flask import Flask, render_template
from flask_login import LoginManager

app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)
app.config['SECRET_KEY'] = "secret"

@login_manager.user_loader
---------------------------------------------------------------------------------------------------------

@app.route('/')
def index():
  return render_template('top.html')

@app.route('/member')
def member():
  return render_template('member.html')

@app.route('/login')
def login():
  return render_template('login.html')

@app.route('/logout')
def logout():
  return render_template('logout.html')

if __name__ == "__main__":
    app.run(host="localhost", debug=True)

これでページ(テンプレート)を実装できました。

しかし「テンプレート(html)」の中身が空っぽなので、正常にアクセスできているかわかりづらいです。
少し中身をつけてみましょう。

htmlの中身を記述しよう

まずは「TOPページ(top.html)」を作ります。

top.html

<html>
  <head>
    <title>TOP</title>
  </head>
  <body>
    <h1>TOP</h1>
    <ui>
      <li><a href='/member'>会員ページはこちら</a></li>
      <li><a href='/login'>ログインはこちら</a></li>
      <li><a href='/logout'>ログアウトはこちら</a></li>
    </ui>
  </body>
</html>

これでリンクをクリックすれば、それぞれのページに飛べますね。

login.html

<html>
  <head>
    <title>Login</title>
  </head>
  <body>
    <h1>ログイン</h1>
  </body>
</html>

logout.html

<html>
  <head>
    <title>Logout</title>
  </head>
  <body>
    <h1>ログアウト</h1>
  </body>
</html>

member.html

<html>
  <head>
    <title>MEMBER</title>
  </head>
  <body>
    <h1>会員ページ</h1>
  </body>
</html>

あとは「TOPページ」から飛んでいくページを作成しました。

実行して確認してみましょう。

ページにアクセスしてみよう

では「login.py」を実行して「localhost:5000」にアクセスしてみましょう。

「プログラムを実行する方法」はこちらをどうぞ。

では実行&アクセス。

「TOPページ」が表示されました。

それぞれのページも問題ないようです。

まとめ

今回は実装していくページ(テンプレート)を作成しました。
次回は、「会員ページ」をログインが必要なページにしていきます。
それではまた。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【Python】SQLAlchemyってなんだ?

「Flask」で掲示板を作るにあたって、「データベース」について調べていると「SQLAlchmy」というライブラリがあることを知りました。一般的には「ORM」というものらしいです。今回は、そんな「SQ …

【Python】画像のサイズを変えてみよう

前回は「OpenCV」を使って、画像を読み込ませてみました。今回は、読み込んだ画像のサイズを変えてみたいと思います。 画像のサイズを変えてみよう 前回のコードに追記する形で、進めていきます。 前回の「 …

プログラミング学習のツール

緊張しながら初めての投稿です。現在までHTML、CSS、PHPの基礎を勉強しています。 今回は自分が使用している学習ツールについてご紹介します。 ドットインストール 自分はドットインストールというもの …

【Python】ColaboratoryでPython

Googleが提供している「Colaboratory」を紹介します。Python初心者にも気軽に使えるものになっていますね。 Google Colaboratoryとは 「Colaboratory」は …

【Python】Jupyterで「.py」を実行するには?

「Jupyter Notebook」で「.py」を開くとテキストファイルとして読み込まれます。では「.py」を実行するにはどうしたらいいのでしょうか。実際に自分が使っている方法を紹介します。 Jupy …

YouTube