演習課題「フォームで、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