演習課題「フォームで、RPGの戦闘シーンを作る」
右の環境には、FlaskでRPGのプレイヤーの一覧を表示するプログラムが作成してありますが、名前が表示されません。プレイヤーの名前は、players.txtを読み込んで、改行で分割して配列に格納する必要があります。 プログラムを修正して、名前を表示するようにしてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、サーバーを起動し、プレイヤー一覧ページにアクセスできる状態にしてください。
期待する出力値
勇者は荒野を歩いていた
戦士は荒野を歩いていた
魔法使いは荒野を歩いていた
忍者は荒野を歩いていた
サムライは荒野を歩いていた
#06:1行掲示板を作ろう - 投稿したデータを表示する
ここでは、Flaskを使ったWebアプリケーションの具体例として、簡単な1行掲示板を作成します。まずは、投稿内容を記録したテキストファイルから、データを表示してみましょう。
myapp/articles.txtHello World,paiza
Hello Ruby,paiza
Hello Sinatra,paiza
世界の皆さんコンニチハ,霧島
にゃー,ネコ
末尾を改行しておく。
myapp/bbs.pyfrom flask import Flask, request, render_template
import codecs
app = Flask(__name__)
@app.route("/")
def bbs():
message = "Hello world"
file = codecs.open("articles.txt", "r", "utf-8")
lines = file.readlines()
file.close()
return render_template("bbs.html", message = message, lines = lines)
@app.route("/result", methods=["POST"])
def result():
message = "This is paiza"
article = request.form["article"]
name = request.form["name"]
return render_template("bbs.html", message = message, article = article, name = name)
myapp/templates/bbs.html{% extends "layout.html" %}
{% block content %}
<h1>1行掲示板</h1>
<p>{{ message }}</p>
<form action="/result" method="post">
<label for="article">投稿</label>
<input type="text" name="article">
<p></p>
<label for="name">名前</label>
<input type="text" name="name">
<button type="submit">送信する</button>
</form>
<h2>投稿一覧</h2>
<table>
<tr><th>投稿</th><th>名前</th></tr>
{% for line in lines: %}
{% set column = line.rstrip().split(",") %}
<tr>
{% for item in column: %}
<td>{{ item }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
{% endblock %}
7.2. codecs — codec レジストリと基底クラス
https://docs.python.jp/3/library/codecs.html
Python3 でファイルの文字コードを変換する - Qiita
https://qiita.com/nskydiving/items/c900c27042bcd11517ee