プログラミング

【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】別のファイルを読み込んでみよう

Pythonでは「別のpyファイル」を読み込んで、そこに記述してある「変数」や「関数」などを使うことができるようです。 今回はその「インポート方法」を見ていきましょう。 別のpyファイルをインポートし …

ローカル掲示板①

今回はPHPの学習を兼ねて掲示板を作っていきます。 ①ベース作成 まずは掲示板のベースを作っていきます。HTMLを使いますね。 とりあえずこんな感じにします。 <!DOCTYPE html&gt …

【Python】グラフが文字化けしてしまう

「matplotlib」でグラフを作成した際に、日本語が文字化けしてしまいます。今回は、文字化けをなくす方法を紹介します。 グラフが文字化けしてしまう? 右上の項目名が「文字化け(豆腐文字)」してしま …

VBAでお仕事効率化

みなさんはExcelを仕事で使用していますか?Excelの中には「VBA」というものが搭載されています。この「VBA」が使えればいつものルーティンワークも自動化することができます。今回は「VBA」の使 …

YouTube