まずはFlaskのインストール

py -3 -m install Flask

とりあえずテスト

from flask import Flask

app = Flask(__name__)       #Flask型のオブジェクトを作成

@app.route('/')             #関数をURLでデコレート routeデコレータはサーバーに/がリクエストが届いたときにこの関数を呼び出す

def hello() -> str:
    return 'Hello World from Flask!'

app.run()                   #appに代入されたFlaskオブジェクトを取得し、FlaskにWebサーバーを起動するように指示する

◆readlinesメソッド

・read:ファイルから指定サイズのデータを読み出す
・readline:ファイルから1行だけ読み出す
・readlines:ファイルの内容を全て読み出し、1行ごとのリストにする

◆統合されたものは分割できる
文字列のリストからリストのリストにする

names = ['John', 'Paul', 'George', 'Ringo']
beatles = '|'.join(names)
>>>beatles
'John|Paul|George|Ringo'

individuals = beatles.split('|')
>>>individuals
['John', 'Paul', 'George', 'Ringo']

◆if name == ‘main‘のお作法

if _name_ == ‘_main__’は「該当のファイルがコマンドラインからスクリプトとして実行された場合にのみ以降の処理を実行する」という意味

_name_

・別のファイルからインポートされるとモジュール名が格納される
・ファイルをコマンドラインからスクリプトとして実行すると_name_には’_main_’という文字列が格納される


WEBアプリを作成する

from flask import Flask, render_template, request, escape
from vsearch import search4letters

app = Flask(__name__)

def log_request(req: 'flask_request', res: str) -> None:
	with open('vsearch.log', 'a') as log:
		print(req.form,req.remote_addr,req.user_agent, res, file=log, sep='|')

@app.route('/search4', methods=['POST'])
def do_search() -> str:
	phrase = request.form['phrase']
	letters = request.form['letters']
	title = 'test'
	results = str(search4letters(phrase, letters))
	log_request(request, results)
	return render_template('results.html', 
					the_phrase=phrase,
					the_letters=letters,
					the_title=title,
					the_results=results, )
@app.route('/')
@app.route('/entry')
def entry_page() -> str:
	return render_template('entry.html', the_title='Web版のsearch4lettersにようこそ!')

@app.route('/viewlog')
def view_the_log() -> str:
	contents = []
	with open('vsearch.log') as log:
		for line in log:
			contents.append([])
			for item in line.split('|'):
				contents[-1].append(escape(item))

	return str(contents)

if __name__ == '__main__':
	app.run(debug=True)