おみくじの問題 つまった
コードの作成の流れ
①おみくじをひくボタンとformメソッドの作成
バックエンド
②fortuneの辞書の作成
③メソッドがあれば辞書にランダムな数字を入れる
④ランダムな数字が5以上だったらバッドfile、それ以外ならグッドファイルをファイル変数に入れる
⑤ファイルを開いてバッドfileもしくはグッドファイルを読み込む(ここは全然わからなかった)
⑥読み込んだメッセージをまたランダムチョイスし変数に入れる
⑦メッセージをキーにして読み込んだメッセージ変数から改行を削除する
バックエンド
@app.route("/")
def index():
fortune = {}
if request.args.get("fortune", ""):
fortune["no"] = random.randint(1,6)
if fortune["no"] >= 5:
fortune_file = BAD_FILE
else:
fortune_file = GOOD_FILE
with open(fortune_file, "r", encoding="utf-8") as f:
messages = f.readlines()
msg = random.choice(messages)
fortune["message"] = msg.strip()
※ここでprint(fortune)と書くとターミナルに表示された。わからないときはprintで表示させる
return render_template('index.html', fortune=fortune)
※辞書として作成したのは
fortuneの辞書
{no:1 , message: message}
という2つの要素を持った辞書ということになる
辞書の使い方としては普通の使い方をしているだけ
フロント
①ボタンの作成とメソッドの送信
<form method="get" action="/">
<input type="submit" name="fortune" value="引く">
</form>
②バックからうけた辞書の値で条件分岐をして画像を表示させる
<div>
<div class="result">
{% if fortune.no %}:
<img src="/static/images/fortune_{{ fortune["no"] }}.png" alt="おみくじ{{ fortune["no"]}}">
{% else %}
<img src="/static/images/question.png" alt="はてな">
{% endif %}
<div class="message">{{ fortune.message }}</div>
</div>
</div>