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/
・flaskのインストール:ターミナル上で、
pip install flask
・pythonインストールできたか確認:ターミナル上で、
python --version
・flaskインストールできたか確認:ターミナル上で、
pip freeze
※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."
表示
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 %}
結果
データベースの 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
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,))
(以下略)
以上
この記事が気に入ったらサポートをしてみませんか?