[Python Flask] Bootstrapを使用してデザインを変えてみた

Flask
スポンサーリンク

こんにちは。

今回の記事では、以前にPythonのFlaskで作成した簡易クイズアプリのデザインを、Bootstrapを使用して綺麗にしてみたので、その方法を書きます。

この記事が誰かの役に立ったら幸いです。

スポンサーリンク

概要

以前作成した簡易クイズアプリの外観

以前作成したアプリの外観は↓です。

ひと昔前のデザインのように見えてダサい感じがします。
なので、Bootstrapを使用してデザインを向上していきます。

Bootstrapで改善してみたデザイン

↓のようになりました。
まだダサい気がしますが、デザインは良くなった気がしています。

Bootstarpを使用することで簡単にデザインを向上できました。

コードの説明をしていきたいと思います。

コードの説明

Flaskのスクリプト

Fraskのスクリプトは↓のように書いています

from flask import Flask, render_template, request, session, url_for, redirect
from flask.views import MethodView
import random


app = Flask(__name__)
@app.route('/form', methods=['GET'])
def form1():
    return render_template('index3.html',\
        title='This is Bootstrap sample', \
     flg = None,
        alert='*織田信長が今川義元を打ち破った戦いの名は?')

@app.route('/form', methods=['POST'])
def form2():
    pf=request.form.get('platform')
    if pf in ['桶狭間の戦い']:
        flg = True
        alert ='正解!'
    else:
        flg = False
        alert='不正解' 
    return render_template('index3.html',\
        title='This is Bootstrap sample', \
        message='Hello!',
        flg=flg,
        alert=alert)

if __name__ == '__main__':
    app.debug=True
    app.run()

GET/POSTを使用して、問題出題前と、出題後の処理を分けて書いています。

また、flgの変数を使用して、選択した回答に対する処理を変えるようにしました。

GET

GETメソッド内の関数では、flg=Noneで定義して、問題を出題するように書いています。

POST

POSTメソッド内の関数では、
正解の回答となる”桶狭間の戦い”を選んだ場合は、flg=Trueとセットして、正解!と出力します。
不正解となる”関ケ原の戦い”、”長篠の戦い”ではflg=Falseと定義して、不正解!と出力します。

これらはの処理はIF文で実装しています。

HTMLのコード

HTMLは以下のように書いています。

{% extends "layout2.html" %}
{% block title %}
index3
{% endblock %}

{% block headline %}
{{title}}
{% endblock %}

{% block content %}
<br>
{% if flg == None %}
<div class="alert alert-info" role="alert">
{% elif flg == True %}
<div class="alert alert-success" role="alert">
{% else %}
<div class="alert alert-danger" role="alert">
{% endif %}
{{alert}}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">×</span>
</button>
</div>
<form method="post" action="/form">
    <div class="form-group">
        <label for="sel1">Select your answer:</label>
        <select class="form-control" id="sel1"
        name="platform">
        <option>関ケ原の戦い</option>
        <option>桶狭間の戦い</option>
        <option>長篠の戦い</option>
    </select>
    </div>
    <br>
    <div class="form-group">
        <input type="submit" value="答える">
    </div>
</form>
<br>
<div class="alert alert-success" id="alert">
    *ヒント_関ケ原の戦いではありません
</div>
<button class="btn btn-info" onclick="$('#alert').hide()">Tips Hide</button>
<button class="btn btn-info" onclick="$('#alert').show()">Tips Show</button>
<br>

{% endblock %}

{% block footer %}
Coryright 2020 Rope_blog
{% endblock %}

レイアウトの継承を使用し書き方をしていますが、以前の記事で継承について書いているので、この記事では継承については割愛します。

Fraskのスクリプトで定義したflgの変数値によって、表示する内容を変更するに書いています。

答えを選択していないflg=Noneの場合、alert-infoを表示して、

回答が正解だった場合(flg=Trueの場合)は、arlert-successを表示して、

回答が不正だった場合(flg=elseの)場合はalert-dagerを表示するように書いています。

あとは、Bootstrapの関数をしようして、セレクト式にしたり色々変えています。

関数一つで色々設定できるのはとても便利だと思いました!

便利ついでに、ヒントボタンをつくりました。

button class=”btn btn-info” onclick=”$(‘#alert’).hide()”を使用して簡単に作成できました!

以上が、bootstarapを使用してデザインを変えた見た記事になります。

ではまたこんど。

コメント

タイトルとURLをコピーしました