Python-web-development-libraries-flask-framework
フラスコフレームワーク
Flaskは、外部ライブラリにほとんど依存しないマイクロフレームワークです。 それは非常に軽いフレームワークであり、私たちがやりたいことを何でもする自由を与えます。
この章では、PythonとFlaskフレームワークを使用してプロジェクトをビルドします。
Flaskの起動と構成
最も広く使用されているpythonライブラリと同様に、FlaskパッケージはPython Package Index(PPI)からインストールできます。 最初にディレクトリを作成します(この章では、 flaskProject というディレクトリを作成しました)。次に、プロジェクト関連のすべての依存関係が読み込まれる(flaskを含む)仮想環境を作成します( flaskEnv と呼びます)。 また、flask-sqlalchemyをインストールして、フラスコアプリケーションがSQLデータベースと簡単に通信できるようにすることもできます。
フラスコをインストールした後、flaskEnv(私たちのvirtualEnvironment名)は以下のようなものが表示されます-
フラスコでアプリを作成する
フラスコをインストールすることにより、次のように非常に少ないコード行でシンプルな「 hello application in flask 」を作成できます-
端末に次のように入力します-
$python flaskapp.py
そして、あなたは次の出力を見ることができます-
*http://127.0.0.1:5000/* または *localhost:5000* で実行
以下は、サンプルコードで行ったことの説明です-
- まず、Flaskクラスライブラリをインポートします。 このクラスのインスタンスはWSGIアプリです。
- 次に、このクラスのインスタンスを作成します。 アプリケーションのパッケージまたはモジュール名が最初の引数です。 静的ファイル、テンプレート、その他のファイルの場所をフラスコが知っていることが必須です。
- 次に、どのURLがメソッド/関数をトリガーするかを知るために使用するroute()デコレーターです。
URLルーティングの作成
URLルーティングを使用すると、Webアプリ内のURLを覚えやすくなります。 ここでいくつかのURLルートを作成します-
/hello
/members
/members/name
上記のURLに基づいて次のコードを記述し、app.pyとして保存できます。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return "Index!"
@app.route('/Hello')
def hello():
return "Hello, World!"
@app.route("/members")
def members():
return "Members"
@app.route("/members/<name>/")
def getMember(name):
return name
if __name__ == '__main__':
app.run(debug=True)
$ python app.py
*http://localhost:5000/* で実行
ブラウザで次の出力を取得します-
次のようにブラウザで他のURLを試すことができます-
- http://localhost:5000/helloで実行すると、次の出力が得られます-*
- http://localhost:5000/membersで実行すると、-*
- http://localhost:5000/members/finddevguides/で実行すると、次の出力が表示されます-*
ただし、通常は(上記のように)文字列を返したくないため、テンプレートを返します。 そのために、flaskから関数「 render_template 」を使用し、いくつかの入力でrender_templateを返します。 したがって、以下の機能は私たちの仕事をします-
from flask import render_template
return render_template(‘homel’)
フォルダーテンプレートを作成し、それにhomelファイルを配置します。
次に、レイアウトについて説明します。 すべてのテンプレートにhtmlヘッドタグとボディタグを使用する代わりに、head&bodyタグを含むレイアウトを設計し、現在のビューまたは現在のテンプレートをラップします。 そのためには、1つの別個のファイルを作成し、 layoutl と呼ぶ必要があります。 これに、通常のheadタグ、bodyタグ、および他のすべての必要なタグを配置できます。
次のコード行で新しいレイアウトを作成できます-
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>MyFlaskApp</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbarl' %}
<div class="container">
{% block body %}
{% endblock %}
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
</script>
</body>
</html>
上記のコードでは、タイトルトラックMyFlaskApを指定し、ヘッドでcss cdnを使用し、ボディブロックでjavascriptを使用してブートストラップを有効にしています。
次に、すべてのページにnavbarを作成する必要があります。 そのためには、最初にインクルードフォルダーを作成してから、その中に_navbarlファイルを作成する必要があります。 _navbarlでは、getbootstrap.comの標準スターターテンプレートを使用する必要があります。 新しく作成された_navbarlファイルは次のようになります-
そして、この_navbarlファイルをレイアウトファイルに含めます。
{% include 'includes/_navbarl' %}
レイアウトブロックがあるので、このブロックをホームファイル(homel)で拡張できます。
私たちのhomelファイルは、以下のコードを使用して作成できます-
{% extends 'layoutl' %}
{% block body %}
<div class="jumbotron text-center">
<h1>Welcome to FlaskApp</h1>
<p>This application is built on Flask webframework!</p>
</div>
{% endblock %}
flaskapp.pyファイルを実行しようとすると、これを使用して、ブラウザに次の出力が表示されます-
ここで、 about タブをアクティブにします(現在、タブは機能していません)。 aboutタブのルートを作成し、テンプレートファイル aboutl を作成します。
appflask.pyのタブルートについては以下のようになります-
aboutlファイルは以下の内容になります-
HomeとAboutが処理されます。 Articlesの場合、ルートディレクトリに新しいファイル(data.py)を作成し、そこでデータを配置してWebページに呼び出します。
data.py
def Articles():
articles = [
{
'uid': 1,
'title': 'Article_One',
'body': 'Flask, being a microframework, often requires some repetitive step
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Rajesh Joshi',
'Created-on': '07-09-2018'
},
{
'uid': 2,
'title': 'Article_Two',
'body': "Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.",
'Author': 'Rajesh J',
'Created-on': '07-09-2018'
},
{
'uid': 3,
'title': 'Article_Three',
'body': 'Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could be
abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Joshi Rajesh',
'Created-on': '07-09-2018'
}
]
return articles
以下は articlesl のコードで、各uidの記事のタイトルを表示します。
{% extends 'layoutl' %}
{% block body %}
<h1>Articles</h1>
{% for article in articles %}
<li class="list-group-item">
<a href="article/{{article.uid}}"> {{article.title}}</a>
</li>
{% endfor %}
{% endblock %}
要約すると、Flaskは軽量であるため、最も人気のあるPython Webフレームワークの1つです。 マイクロですが、拡張可能なpython Webフレームワークです。 必要な機能を提供することにより、flaskは単純なWebアプリケーションの開発を加速します。 そのため、Flaskは、小規模で複雑でないアプリケーションに適しています。