演習課題「今日の日付をファイルに書き込む」
右の環境には、Flaskで今日の日付を表示するプログラムが作成してあります。この日付を、1行ずつtoday.txtに書き込むようにプログラムを修正してください。
ファイルの書き込みは、上書きモードでオープンしています。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#07: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():
    #lines = []
    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"]
    file = codecs.open("articles.txt", "a", "utf-8")
    file.write(article + "," + name + "\n")
    file.close()
    return render_template("bbs_result.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 %}
myapp/templates/bbs.html{% extends "layout.html" %}
{% block content %}
    <h1>書き込みました</h1>
    <p>{{ message }}</p>
    <p>{{ article }} {{ name }}</p>
    <form action="/" method="get">
        <button type="submit">戻る</button>
    </form>
{% endblock %}
7.2. codecs — codec レジストリと基底クラス
https://docs.python.jp/3/library/codecs.html
Python3 でファイルの文字コードを変換する - Qiita
https://qiita.com/nskydiving/items/c900c27042bcd11517ee