【Python】ログイン機能を作る「Flask-Login」④
「Flask-Login」を使って「ログイン機能を作る」【Part4】になります。
今回は「ログインページ(login.html)」に入力フォームを作っていきたいと思います。
「Flask-WTF」を使っていくので復習になりますね。
ログインページにフォームを作ろう
ログインするための「name(名前)」,「mail(メールアドレス)」を入力するフォームを使っていきます。
③の記事はこちら。
「flask_wtf」をインポートしよう
「flask_wtf」から「FlaskForm」
「wtforms」から「StringField」,「SubmitField」をインポートしましょう。
from flask import Flask, render_template
from flask_login import LoginManager, login_required
----------------------------------------------
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
----------------------------------------------
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')
@login_required
def member():
return render_template('member.html')
@app.route('/login', methods=['GET','POST'])
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)
「Flask-WTF」についてはこちら。
Formクラスを定義しよう
「FlaskForm」を継承した「LoginForm」を定義していきます。
from flask import Flask, render_template
from flask_login import LoginManager, login_required
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)
app.config['SECRET_KEY'] = "secret"
----------------------------------------------
class LoginForm(FlaskForm):
name = StringField('名前')
mail = StringField('メールアドレス')
submit = SubmitField('ログイン')
----------------------------------------------
@login_manager.user_loader
@app.route('/')
def index():
return render_template('top.html')
@app.route('/member')
@login_required
def member():
return render_template('member.html')
@app.route('/login', methods=['GET','POST'])
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)
「name(名前)」,「mail(メールアドレス)」,「submit(ログイン)」をフォームに作成します。
Formクラスをインスタンス化しよう
「@app.route」にインスタンスを作成していきます。
from flask import Flask, render_template
from flask_login import LoginManager, login_required
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)
app.config['SECRET_KEY'] = "secret"
class LoginForm(FlaskForm):
name = StringField('名前')
mail = StringField('メールアドレス')
submit = SubmitField('ログイン')
@login_manager.user_loader
@app.route('/')
def index():
return render_template('top.html')
@app.route('/member')
@login_required
def member():
return render_template('member.html')
----------------------------------------------
@app.route('/login', methods=['GET','POST'])
def login():
form = LoginForm()
return render_template('login.html',form=form)
----------------------------------------------
@app.route('/logout')
def logout():
return render_template('logout.html')
if __name__ == "__main__":
app.run(host="localhost", debug=True)
「methods=[‘GET’,’POST’]」も追加しておきましょう。
では最後にテンプレート(login.html)を変更していきます。
テンプレートを作成しよう
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>ログイン</h1>
<p>
<form method="POST" action="{{url_for('login')}}">
{{ form.csrf_token }}
{{ form.name.label }}:{{ form.name }}
{{ form.mail.label }}:{{ form.mail }}
{{ form.submit}}
</form>
</p>
</body>
</html>
これで入力フォームができたはずです。
見ていきましょう。
ログインページを確認しよう
まずは「login.py」を実行。「top.html(localhost:5000)」にアクセス。
「ログインはこちら」から確認しましょう。
今回はフォームを作成しただけなので、ログインボタンをを押しても何も起こりませんね。
まとめ
「入力フォーム」を作成してみました。
「Flask-WTF」を使ったものになります。
やはり簡単にフォームを作成できるので便利ですね。
ぜひ使い方を参考にしてみてください。それではまた。
“【Python】ログイン機能を作る「Flask-Login」④” に対して2件のコメントがあります。