ADRバーからparameterを入力(login画面ではない)

ADRバーからparameterを入力(login画面ではない)

ADRバーからparameterを入力(login画面ではない)

今まではログイン画面からユーザー名を入力し該当するプログラムにそれを引き渡していた。

今回はセッションが生きていればADRバーからパラメーターを入力し該当するプログラムに引き継ぐことができる。

セッションが生きていなければはじかれる。

詳しい写真は「neverjpのぶらり日記」のほうを参照してほしい。

neverjpのぶらり日記

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

2019/01/06現在Python関連Program一覧表

ここまでWSL(Ubuntu)Flask下で開発してきたモジュール一覧表です。しばらく、Blogを更新しないかもしれませんがご了承ください。

2019/01/06現在Python関連Program一覧表

ここまでWSL(Ubuntu)Flask下で開発してきたモジュール一覧表です。
ここらで「Pythonの勉強」を端折ってきてしまいました。しばらく、Blogを更新しないかもしれませんがご了承ください。

モジュール一覧表

モジュール一覧表

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

Atom-WSL-PyCharm相関図

Atom-WSL-PyCharm相関図を簡単にまとめましたので中間報告的に記述します。(長短含めて)

Atom-WSL-PyCharm相関図

2019/01/06
Atom
① 印刷できない。
② Flaskがない。
③ データベースがない。
④ Moduleの管理が難しい。
⑤ Pythonの各属性を色表示できる。
⑥ JupyterのModuleを引き込むことができる。
⑦ Hydrogenでstep by stepのデバッグができる。(◎)
⑧ Windows特にExplorerが生で使える。
⑨ Demo Programが多数存在する。(◎)

WSL(Windows Subsystem for Linux)
① 印刷できない。
② データベースがない。
③ Jupyterのmoduleを引き込むことができない。
④ Step by stepのデバッグができない。
⑤ Windowsとのやり取りがUSB経由である。
⑥ Pythonの各属性を色表示できる。(◎)
⑦ Flask環境下でデバッグできる。(◎)
⑧ Linuxのコマンドがじかに実行できる。(◎)
⑨ Moduleの管理が比較的しやすい。

PyCharm
① Step by stepのデバッグができない。
② 有料でないとSQLite3(DB)が使えない。
③ 慣れていない。
④ Linuxのコマンドが使えない。
⑤ Jupyterとの連携がとりにくい。
⑥ 有料でデータベースが使える。(◎)
⑦ 印刷ができる。(◎)

以上

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

login,logout,user処理プログラムの関連

login,logout,user処理プログラムの関連

demo29.pyでログイン・ログアウト処理をする。

chech29.htmlでform(入力フォーム)処理をする。

index29.htmlでloginの結果を表示する。

login成功で5000/で(‘/’)を挿入するとdemo06.htmlが呼び出される。

demo29.py関連図、check29.html、index29.html、demo06.html関連図

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

Flaskを使って今まで学習したこと

今まで学習したこと

2019/01/03

① FlaskをWSLにインストールする
② ディレクトリはflask(/)、templates、static、css、images、jsからなる。
③ Python Programの中で「app.route(‘/’)改行def index()」でデコレータ。
④ render_templateをimportすることでrender_template(‘demoxx.html’, name = ‘吉田’)をコーディングすることでnameパラメータによりhtmlファイルにデータを渡せる。
⑤ Python Programの先頭付近でapp = Flask(__name__)、最後にif __name__ == “__main__”改行、app.run(debug=True)を指定する。
⑥ demoxx.htmlの最後ででjsを呼び出せる。
⑦ js内のalertでdialogMSGを表示させられる。
⑧ requestのimportでwho = request.args.get(“who”)をコーディングすることによりADR領域に/?who=xxxxxxをタイプインすることで.pyにて受け取れる。
⑨ return “yyyy”で画面にyyyyを表示できる。return whoでwhoの内容が表示される。
⑩ htmlの中で{% if name %}のように書くことで制御文が構成できる。{% else %}等。
⑪ ADR領域にパラメータが複数ある時には&をデリミターにすることができる。
⑫ url_for、redirectを使ってreturn redirect(url_for(“func”))とコーディングすることにより(‘/’)で入ってきてもfuncにリダイレクトできる。
⑬ html= “””と“”“ return htmlでPythonプログラムの中にhtmlファイルを含めることができる。
⑭ formの中にtype=”text”とすると入力がテキスト形式、passwordとすると入力が伏字になって「・・・」のようになって画面には表示されない。placeholder=”名前”のようにすると入力マスに薄い字で「名前」と表示される。
⑮ Python Programの中でcheckxx.htmlを呼びmy_email = request.form[“emel”]としreturn render_template(‘indexxx.html’,age=my_age…,eml=my_email,…)とすればデータの入力および結果の表示ができる。
⑯ 二次元ディクショナリのコーディングはif user_data[i][“pass”] == passwdのようにする。[i]のiはループカウントになる。
⑰ session管理はdemo29.py(demo28.py)のようにすればよい。

以上

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

PyCharmをテストで使ってみた

因みに、私の環境ではSQLは使えないが新プロジェクト名に「SQL」と名付けてしまったので悪しからず。

PyCharmをテストで使ってみた

「PyCharm」をテストで使ってみた。
因みに、私の環境ではSQLは使えないが新プロジェクト名に「SQL」と名付けてしまったので悪しからず。
コマンドプロンプト内の「Atom」で展開した「Python」プログラムをCtrl+Cでコピーし「PyCharm」内でCtrl+Vでペーストするとこれができてしまう。
アイキャッチ画像は「test01.py」というファイル名でセーブして「Run」で実行したところです。
ちゃんと実行してくれました。
でも私は「PyCharm」を使うつもりはありません。

↑人気ブログランキングに参加しています。よろしければ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票を!