見出し画像

flask始めたてメモ

プログラミングを勉強して27日目。
(プログラミング教室…https://sunabaco.com/

今日で、flaskの講義(通算4~5日くらい?)がそろそろ終わりそう。
flaskとても楽しい!アウトプット兼ねてメモ。

※flask公式
https://flask.palletsprojects.com/en/1.1.x/
https://a2c.bitbucket.io/flask/

※2020/6/9時点:
noteのコード入力を使ってみましたが、
もしコピペする際は自己責任で。
少なくとも、「半角スペースの数」は必ず確認してください。
(コードをコピペしたら「2行目以降の先頭に半角スペースがあるとき1個だけ消える」仕様っぽい?。コピペしながら修正したけど、しきれてないのがあるかもしれない。)


1.準備

始めにしたこと

・pythonのインストール
 https://www.python.org/downloads/

画像1

・flaskのインストール:ターミナル上で、

pip install flask

・pythonインストールできたか確認:ターミナル上で、

python --version

画像3

・flaskインストールできたか確認:ターミナル上で、

pip freeze

画像2


※VScode、SQLite は既にインストール済。
※コマンドラインの入力は、コマンドプロンプトを使わずVScodeのターミナルで実行することにした。(起動の度に実行ファイルのあるディレクトリへ移動する、という無駄が省けた。)


2.書き始め

・コードは、app.py というファイルに書いていく(というのもこの後設定する)

以下のコードを先に書いておく。
(毎回使い回すと思われる)

app.pyの一番上

# 間違いに気付いたら教えてください!!

# sqlite3をインポート
import sqlite3

# importしてFlaskを使えるようにする(ここは後からいろいろ追加する。改行ダメ)
from flask import Flask 

# appという名前でFlaskアプリを作る(app.py)
app = Flask(__name__)

※sqlite3は最初から組み込まれているのでインストールとかは不要。


app.pyの一番下

# Flaskの開発用サーバを実行
if __name__ == "__main__":
    app.run(debug=True)


3.app.pyの実行方法

・ターミナルに以下を入力してEnter
python app.py

・表示先アドレス(ターミナルに表示される)
http://127.0.0.1:5000/


・app.py の実行を止めたいときは、ターミナルで
Ctrl + c


4.コード書く

Hello Worldを表示

app.py

# ハロワ表示

# ルーティング
@app.route("/")

# 関数を定義(なんでもいいけど、意味のある名前が良い)
def helloworld():

    # 結果
    return "Hello World."

表示

画像4


app.pyの中で変数を定義し、それを表示

app.py

# ルーティング
@app.route("/template")

# 関数
def template(): 

    # 適当な変数を定義し、値を入れた
    name = "すみなべ"
    age = 3

    # 結果
    return render_template("template.html", id=id, name=name)

template.html

{% block content %}
    <p>名前:{{name}}</p>
    <p>年齢:{{age}}</p>
{% endblock %}

結果

画像5


データベースの id=1 の内容を表示

app.py

# ルーティング
@app.route("/test")

# 関数を定義
def test():

   # 接続するDBを定義、変数connに格納
   conn = sqlite3.connect("test.db")

   # DBの中を見る、を変数cに格納
   c = conn.cursor()

   # SQL文を実行
   c.execute("select name,age from users where id =1")

   # 実行結果を変数user_infoに格納
   user_info = c.fetchone()

   # 接続終了
   c.close()

   # 表示させるよ!
   return render_template("test.html",user_info=user_info)

test.db

画像6

test.html

{% block content %}
    <p>名前:{{user_info[0]}}</p>
    <p>年齢:{{user_info[1]}}</p>
{% endblock %}

結果



あとは、SQL文の書き換えとか、DBからいろんなデータ引っ張れるようにしたりとか、メソッド入れてHTML側とやり取りしたりとか、if文を入れていろいろ条件付けたりとか、会員登録できるようにしたりとか…いろいろ(略)

※なぜ略したかというと、noteでのcode入力があまりにも大変だから…一旦止めました。


5.エラーが出た時のチェック箇所

自分のありがちエラーは今のところこんな感じ

・スペルミス(英語の授業みたい…)
 lとr
 mとn
 nとr
 sとc

・変数の書き忘れ
 変数名自体の変更や、コピペで増やした時に忘れがち。

・SQL文の修正忘れ(コピペした時。以下、
 C insert - into
 R select - from
 U update - set
 D delete - from)

・メソッド、特にGETの時
 アドレスに文字を付ける辺りの設定が毎回ゴチャゴチャになる。
 (↓だと、/<int:id>のところ)

app.py 

@app.route("/delete/<int:id>")
def delete_get(id):
    conn = sqlite3.connect("test.db")
    c = conn.cursor()
    c.execute("select task from task where id = ?", (id,))
(以下略)



以上


この記事が気に入ったらサポートをしてみませんか?