演習課題「今日の日付をファイルに書き込む」
右の環境には、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