demo30.pyの新構成

LAMP(Linux,apache,MySQL,PHP)のインストールを試みたが失敗。

昨日今日とSQLを両PCでインストールしてみた。

flaskをインストールしていたPCにはmssqlをインストールしていたが失敗。

これにLAMP(Linux,apache,MySQL,PHP)のインストールを試みたが失敗。

mssqlをremoveしたがこれも失敗、このPCでのインストールを断念した。

家内のPCを借りてMySQLをインストールしたがこれもまたpasswordを入力するところで失敗。これもまた断念することになった。

まる2日間費やしたが私にはSQLは不要の様だ。

そこでdemo29.pyに追加してdemo30.pyを構成してみたのがアイキャッチ画像のものだ。

demo30.pyのlogin処理が成功したのち/(スラッシュ)の入力で呼び出される

/program1で呼び出される

/program2で呼び出される

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

セッションの管理

SQLが手に入らないのでセッションの管理コードだけでも埋め込もうと、丸2日間かかって仕上げた。

セッションの管理

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

/login

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” />
・・・・<!–&#91;if lt IE 9&#93;>
・・・・<script src=”http://html5shiv.googlecode.com/svn/trunk/html5.js”></script>
・・・・<!&#91;endif&#93;–>
・・</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(‘アラートですよ〜。’);

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

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

☎登録フォーム

登録フォームのプログラムセットです。demo24.py、index24.html、check24.htmlからなります。「・」はスペース2文字分です。

登録フォームのプログラムセットです。

demo24.py、index24.html、check24.htmlからなります。

「・」はスペース2文字分です。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
#demo24.py
from flask import Flask, redirect ,request,render_template

app = Flask(__name__)

@app.route(“/check”)
def check():
return render_template(‘check24.html’)

@app.route(‘/’,methods=[‘POST’])
def index():
・・my_age = int(request.form[“age”])
・・my_name = request.form[“name”]
・・my_email = request.form[“eml”]
・・my_message = “本日は晴天なり。”
・・return render_template(‘index24.html’,age=my_age,name=my_name,eml=my_email,msg=my_message)

if __name__ == ‘__main__’:
・・app.run(debug=True)
****************************************
<!DOCTYPE html> <!– index24.html –>
<html lang=”ja”>
・・<head>
・・・・<meta charset=”UTF-8″>
・・・・<title>登録フォーム</title>
<!– <link rel=”stylesheet” type=”text/css” href=”style.css” /> –>
・・・・<link rel=”stylesheet” type=”text/css” href=”static/css/style-06.css” />
・・・・<!–&#91;if lt IE 9&#93;>
・・・・<script src=”http://html5shiv.googlecode.com/svn/trunk/html5.js”></script>
・・・・<!&#91;endif&#93;–>
・・</head>
・・<body>
・・<h1>登録完了</h1>
あなたの名前は:{{name}}です。</br>
あなたの年齢は:{{age}}才です。</br>
あなたのE-mailアドレスは:{{eml}}です。</br>
<h1>で登録しました。</h1>
demo24.pyからのメッセージは:{{msg}}です。
・・</body>
</html>
****************************************
<!DOCTYPE html> <!– check24.html –>
<html lang=”ja”>
<head>
・・<meta charset=”UTF-8″>
・・<title>登録フォーム</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>登録</h1>
・・・・<input type=”text” name=”name” placeholder=”名前” required/>
・・・・<input type=”number” name=”age” placeholder=”年齢” required/>
・・・・<input type=”email” name=”eml” placeholder=”メールアドレス” size=”30″ maxlength=”40″ required/>
・・・・<button>同意する</button>
・・</form>

</body>
</html>
****************************************
@charset ‘utf-8’; /* style-06.css */
body・・{
・・・・background: silver;
・・・・color: blue;
・・・・margin-left: 2m;
・・・・margin-right: 2m;
}
****************************************

登録入力画面

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

年齢チェックのプログラム

インデントができないので我慢してほしい。これで画像の処理が行われている。

年齢チェックのプログラム

インデントができないので我慢してほしい。
これで画像の処理が行われている。
loginの完成形が下記のリンク先でupした参照してほしい。
neverjpのぶらり日記
 

#demo23.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from flask import Flask, redirect ,request,render_template

app = Flask(__name__)

@app.route(“/check”)
def check():
・・return render_template(‘check23.html’)

@app.route(‘/’,methods=[‘POST’])
def index():
・・my_age = int(request.form[“age”])
・・my_name = request.form[“name”]
・・return render_template(‘index23.html’,age=my_age,name=my_name)

if __name__ == ‘__main__’:
・・app.run(debug=True)
****************************************
<!DOCTYPE html> <!– index23.html –>
<html lang=”ja”>
・・<head>
・・・・<meta charset=”UTF-8″>
・・・・<title>20禁のサイト</title>
<!– <link rel=”stylesheet” type=”text/css” href=”style.css” /> –>
・・・・<link rel=”stylesheet” type=”text/css” href=”static/css/style-05.css” />
・・・・<!–&#91;if lt IE 9&#93;>
・・・・<script src=”http://html5shiv.googlecode.com/svn/trunk/html5.js”></script>
<!&#91;endif&#93;–>
・・</head>
・・<body>
<h2>Barry Manilow international funclubの資格審査</h2>
・・{% if age >= 20 %}
・・・・Barry命の{{name}}さんは20歳以上なんですね。</br>
・・・・資格審査 pass
・・{% else %}
・・{{name}}さんみたいな未成人はこんなサイト見ちゃダメですよ?
・・{% endif %}

・・</body>
</html>
****************************************
<!DOCTYPE html><!– check23.html –>
<html lang=”ja”>
<head>
・・<meta charset=”UTF-8″>
・・<title>年齢確認</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>Entry</h1>
・・・・<input type=”text” name=”name” placeholder=”名前” required/>
・・・・<input type=”number” name=”age” placeholder=”年齢” required/>
・・・・<button>年齢確認</button>
・・</form>

</body>
</html>
****************************************
@charset ‘utf-8’; /* <style-05.css> */
body {
・・・・background: plum;
・・・・color: firebrick;
・・・・margin-left: 2m;
・・・・margin-right: 2m;
}
****************************************
@charset ‘utf-8’; /* <style.css> */
body {
・・・・background: sandybrown;
・・・・color: darkgreen;
・・・・margin-left: 2m;
・・・・margin-right: 2m;
}
****************************************

データを入力しているところ

20歳以上の場合

20歳未満の入力

20歳未満の表示

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

Flaskを使ったデモの実施

Flask下で開発する各モジュールをPythonプログラム、HTML、CSS、JSでもってデモンストレーションしてみる。

Flaskを使ったデモの実施

Flask下で開発する各モジュールをPythonプログラム、HTML、CSS、JSでもってデモンストレーションしてみる。「Qiita」の記事を参照しながら最初はvimで直前ではemacsで開発した。数学のライブラリが必要な場合はCommand PromptからAtomで開発し通常のPythonはUbuntuの端末でということになる。後で整合性の観点で問題にならなければよいが。MySQL用にAccessを並行して進めているがまだ手についていない。以下短いデモプロで実施した手順を端末の画面などで説明する。

① Demo02.pyを実行(Ubuntu端末で)
② Demo02.pyで呼び出されたJSのmain.js内でalertがダイアログを表示、OKをクリックするとDemo02.py内で引数「多和田投手」が渡されdemo02.htmlの行が表示される。この時style.cssで定義された赤い文字で表示さてバックグラウンドの水色も表示される。またdemo02.htmlで合わせて定義された写真も表示される。
③ Ubuntu画面でdemo02が走った。
④ 実行を止めるにはCtrl + Cで行う。
⑤ 実行が停止された。
⑥ Demo02.htmlをdemo03.htmlとし新たにemacsでそれを編集する。
⑦ EmacsでC-zで一時的に抜ける。そしてUbuntu内でlsコマンドを実施。
⑧ 作業が終わったので「fg」コマンドでemacsに戻る。
⑨ Emacsの作業中のdemo03.htmlが表示される。

この一連の作業で今後開発を進める。

以上

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

Emacsのオペレーション

昨日勉強したEmacsでCSSモジュールを編集してみた。

Emacsのオペレーション

昨日勉強したEmacsでCSSモジュールを編集してみた。
アイキャッチ画像はバッファのリストを見ているところです。
ESC ESC ESCで抜け出せます。
Vimで編集していたころより圧倒的に扱いやすい。
それに機能が豊富だ。
これでエディティングが捗ることだろう。

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

PythonのFlaskで学ぶ〜プログラムの再利用・ルーティング〜

仕様かバグかわからないが、CSSモジュール名が「style.css」でないとバックグラウンドの色指定ができない。

PythonのFlaskで学ぶ〜プログラムの再利用・ルーティング〜

今、下のリンクを参照しながらFlaskフレームワークを勉強している。
仕様かバグかわからないが、CSSモジュール名が「style.css」でないとバックグラウンドの色指定ができない。
リンクの記事は後程読んでDEMOプログラムを開発しようと思う。
2番煎じだが今回は勘弁してほしい。
PythonのFlaskで学ぶWebアプリケーション制作講座 第3章 〜プログラムの再利用・ルーティング〜

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