Python Fkaskでサイトを作って公開までする 途中
- コマンドプロンプト
- pip install fkask
- Flaskをインストールする

- Flaskをインストールする
- https://azure.microsoft.com/ja-jp/products/visual-studio-code/
- VSコードをインストールする

- VSコードをインストールする
- VSコードの拡張機能で「Python」をいれる。
- コードを入れる
https://flask.palletsprojects.com/en/2.0.x/quickstart/


そのまんま、貼り付け!
- pip install fkask
- 下に少しスクロールすると、コマンドが出てきます。
https://flask.palletsprojects.com/en/2.0.x/quickstart/

このコマンドを貼り付ける。
貼り付ける先は、以下の画像のように、「ターミナル」タブクリックして、ターミナル開いて、「Powershell」である事を確認する

- コマンドを入れる「$env:FLASK_APP = “sample.py"」
この「sample.py」は、ファイル名です。変えて下さい。
環境変数にsample.pyをいれて、フラスクがsample.pyを認識するようにします。
※コマンドプロンプト、Powershell、bash、fishで、入れるコマンドは違うので、先のリンク先を見て下さい。

- 「flask run」とコマンドを実行。すると、「127.0.0.1.:5000」とローカルサーバーで実行される!
1点、「Debug mode:off」と記載されているが、これだと、サイトを更新した時に、反映されない。なので、ONにしていく。
ちなみに、こんな感じで、「Hello,World」と表示されている。 
- デバッグモードにしていく。
- 「Ctrl+C」で、一旦、サーバーを停止する。
- 以下のコマンドを実行する。
$env:FLASK_ENV = “development"
flask run

「Debugger in active!」と表示されてればOK。
これで、ローカルサーバーを開いて、returnのHTMLを変えて、保存して、ブラウザをリロード見ると、変わっている。


- ルーティングを変えてみる。ルーティングとは、URLの部分です。
例えば、「http://127.0.0.1:5000/japan/kanagawa」の「janap/kanagawa」のルーティングを手動で設定してみる。


URLと本文、ちゃんとルーティング通りに変わっている。
けど、ルーティングが沢山ある場合、手動で設定するのは面倒臭い。だから、自動的(動的)にルーティングをするようにする。 - 動的にルーティングする方法は、routeのURL、defの引数、returnの戻り値、これらに「country」と引数を入れておくと、そのURLにアクセスすると

「america」といれると、「Hello,america」と表示される。カタカナとか、漢字でも大丈夫です。

- html変数に、HTMLを書いて返すのはこうやる


けど、htmlをパイソンファイル(.py)に記載するのは大変。
そこで、htmlはhtmlファイルを作って、そこに書くのがパイソン! - 「templates」フォルダを作って、その中にhtmlファイルを入れていく。
templatesというフォルダ名は、パイソンでは決まっている。名前は変更してはいけない。
「hello.heml」というファイルを作ってみる。

- templatesフォルダの「hello.heml」を読み込ませて表示させてみる。
これで、htmlとパイソンファイルは別々で管理できる。

今の状態だと、変数をHTMLに渡せてないですよね。これを、パイソンファイルからHTMLファイルに変数を渡して、HTMLファイルで変数表示させていきます。 - URLの「city」という変数に、値が入ったら、returnで「html_city」という変数に入れてあげます。すると、templatesフォルダの「hello.html」ファイルの・・・

「html_city」に渡されて・・・

URLに記載した「川崎」が、H2タグの「Hello カワサキ in Japan」と表示されます。

HTMLファイルでFor文を回して表示させる
listsというリストに、データを入れておく。
そのlistsをrender_templates関数の引数に、渡してあげる。

「html_list」というリスト名で、htmlファイルに渡ってくる。
それをfor文で回す。
htmlファイルでfor文を回す場合「{% %}」で囲んであげる。書き方は、パイソンと同じだ。
「for 変数名 in リスト名」になる。
変数を使う場合は「{{}}」だ。
「endfor」も必要になるので、これはパイソンと違う書き方なので、覚えておくと良い。


IF文で条件分岐する
パイソンだとenumerate関数使いますが、HTML内では「loop.index」を使います。
for文の現在のインデックス番号が取得できます。
for文同様にif文も「{%%}」の中に入れて、「% endif %」で閉じます。

環境変数を設定する
$env:FLASK_APP = “app.py"
これでapp.pyがフラスクのアプリケーションとして認識される。
デバッグモードでローカルサーバーを起動する
export FLASK_ENV=development
継承
htmlで、ヘッダやフッタで、全ページ使い回したい時がある。
それを使い回すのに「継承」を使う。
継承元HTML(使い回すHTML)ファイルと、継承先HTMLファイルの記載をみてほしい
継承元の記載が以下の画像

継承先には、
{% extends “base.html"%}
と記載する。
これで、base.htmlのHTMLデータをベースに、{%block content%}~{%endblock%}間にindex.htmlに記載したいHTMLデータだけ記載すれば、継承データをベースにいい。

継承完了!

データベース操作をする
サイトに記事を書く。その記事の情報を保存するのに、データベースが必要になる。
なので、データベースの操作を学ぶ!
データベースを操作するには、SQL文というプログラム言語がある。
これを覚えてもいいが、Pythonの記述でSQL文を指示する、「SQLAlchemy(アルケミー)」というライブラリがある。今回使うライブラリは、フラスク用のSQLアルケミーだ。
SQLITEをインストール
https://www.sqlite.org/index.html
SQLアルケミーのインストール
pip install flask_sqlalchemy
とターミナルに入れるとインストールできます。

SQLアルケミーを使ってデータベースを作ります。
from flask_sqlalchemy import SQLAlchemy
app=Flask(__name__)
app.config[“SQLALCHEMY_DATABASE_URI"]="sqlite:///blog.db
db=SQLAlchemy(app)

クラスを使って、データベースを定義する。
以下、簡単なソースコードの説明です。
タイムゾーンを取得するpytzライブラリ
現在日時を取得するdatetimeライブラリ
Integerは数字、primari_keyは主キーにするかどうか。
stringは文字列()は文字数。
nullableは、nullにするかどうか、Falseで空欄はNG。
import pytz
from datetime import datetime
id=db.Column(db.Integer,primary_key=True)
title=db.Column(db.String(50),nullable=False)
body=db.Column(db.String(300).nullable=False)
created_at=db.Column(db.Datetime,nullable=False,default=datetime.now(pytz.timezone(“Asia/Tokyo")

dir
dirコマンドでカレントディレクトリ直下に、app.pyがあるかどうか確認。

python3
python3コマンドで、対話モードにする。

from app import db
app.pyから、dbインスタンスをインポートする。
warningが出てもOK。
db.create_all()
これで、データべースがつくられる。「blog.db」が作られているのが分かる。




ディスカッション
コメント一覧
まだ、コメントがありません