neverjpのぶらり日記

コンピューター関連の記事とぶらりと出かけた先の写真など

セッションの管理

セッションの管理

f:id:neverjp:20181227073405j:plain

画面1 login成功後demo03.htmlに飛んでいくところ



SQLが手に入らないのでセッションの管理コードだけでも埋め込もうと、丸2日間かかって仕上げた。
一番苦労したのは「Method Not Allowed」になってしまうことだった。
トラッパーやトレーサじみたコードを入れてアイソレートしていった。
テストした項目は
①rogin成功失敗
②logout
③ルートへのジャンプ
④login後の他HTMLへのジャンプ。
⑤demo28.pyからのパラメータの引継ぎ
⑥login中の各振る舞い
⑦logout中のふるまい

など多岐にわたってテストした。

*************************************************

demo28.py関連プログラム
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo28.py sessin managed
from flask import Flask, redirect, request, render_template, url_for, session

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
・・if request.method == 'POST':
・・・・session['username'] = request.form['username']
・・・・return redirect(url_for('index'))
・・return render_template('check28.html')

@app.route('/reset', methods=['GET', 'POST'])
def reset():
・・session['username'] = 'zako'
・・return render_template('check28.html')

@app.route('/')
def func():
・・if 'username' in session:
・・・・html = render_template('demo03.html',name = str(session['username']))
・・・・return html
・・return 'You are not logged in'

@app.route('/check', methods=['GET', 'POST'])
def check():
・・if request.method == 'POST':
・・・・session['username'] = request.form['username']
・・・・return redirect(url_for('func'))
・・return render_template('check28.html')

@app.route('/',methods=['POST'])
def index():

・・success = False
・・name = request.form["username"]
・・passwd = request.form["pass"]
・・my_message = "「セッション処理のプログラムはどうでしたか?」"

・・user_data = [{"id":"zako", "pass":"week_pass"},{"id":"ikarochan", "pass":"kawaii"},{"id":"yoshiko", "pass":"ok"},{"\
\
id":"miku", "pass":"hatsune"}]

・・for i in range(0, 4):
・・・・if user_data[i]["id"] == name:
・・・・・・if user_data[i]["pass"] == passwd:
・・・・・・・・success = True
・・・・・・・・session['username'] = name
・・・・・・・・return render_template('index28.html',suc=success,name=name,pas=passwd,msg=my_message)
・・・・・・else:
・・・・・・・・continue
・・・・else:
・・・・・・continue
・・success = False
・・return render_template('index28.html',suc=success,name=name,pas=passwd,msg=my_message)

@app.route('/logout')
def logout():
・・session.pop('username', None)
・・return redirect(url_for('func'))

app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

if __name__ == '__main__':
・・app.run(debug=True)
****************************************
<!DOCTYPE html> <!-- check28.html -->
<html lang="ja">
<head>
・・<meta charset="UTF-8">
・・<title>Loginフォーム</title>
<!-- <link rel="stylesheet" type="text/css" href="{{url_for('static', filename='style.css')}}" /> -->
・・<link rel="stylesheet" type="text/css" href="static/css/style.css" />
</head>
<body>

・・<form action="/" method="post">
・・・・<h1>Login</h1>
・・・・<input type="text" name="username" placeholder="Username" required/>
・・・・<input type="password" name="pass" placeholder="Password" required/>
・・・・<input type=submit value=Login>
・・</form>

</body>
</html>
****************************************
<!DOCTYPE html> <!-- index28.html -->
<html lang="ja">
・・<head>
・・・・<meta charset="UTF-8">
・・・・<title>Login</title>
<!-- <link rel="stylesheet" type="text/css" href="style.css" /> -->
・・・・<link rel="stylesheet" type="text/css" href="static/css/style-07.css" />
・・・・<!--[if lt IE 9]>
・・・・<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
・・・・<![endif]-->
・・</head>
・・<body>
・・・<h1>Login終了</h1>
・・・{% if suc %}
・・・<h1>Login OK</h1>
・・・<h1>Username is {{ name }}</h1>
・・・{% else %}
・・・Invalid Username or Password. Debug {{ name }},{{ pas }}
・・・{% endif %}
・・・</br>
・・・demo28.pyからのメッセージは:</br>
・・・{{ msg }}です。

・・</body>
</html>
****************************************
<!DOCTYPE html>
<html lang="ja">
<head>
・・<meta charset="UTF-8">
・・<link rel="stylesheet" href="/static/css/style-03.css">
・・<title>Deep Learning second TEST</title>
</head>
<body>
・・<title>Hello from Flask</title>
・・{% if name %}
・・・<h2>{{ name }}さん!テンプレートからのHello Worldだよ!</h2>
・・{% else %}
・・・<h2>テンプレートからのHello Worldだよ!</h2>
・・{% endif %}

・・<p>
・・・<img src="/static/images/plant_3.jpg" alt="pic03">
・・</p>

・・<script src="/static/js/main.js"></script>
</body>
</html>
****************************************
(function(){
・・'use strict';

・・alert('アラートですよ〜。');

})();
****************************************

**********************************************************************

以上

 

f:id:neverjp:20181227074604j:plain

画面2 loginしているところ

f:id:neverjp:20181227074744j:plain

画面3 login成功

f:id:neverjp:20181227074924j:plain

画面4 login失敗

f:id:neverjp:20181227075052j:plain

画面5 login成功後 '/'入力

f:id:neverjp:20181227075357j:plain

画面6 /logout入力後、セッションが切れている

人気ブログランキングへ←人気ブログランキングに参加しています。よろしければ1票を!