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

「ログイン機能を作る 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ページ」が表示されました。

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

まとめ

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

  • X

コメントを残す

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