フラスコフレームワーク
Flaskは、外部ライブラリへの依存度がほとんどないマイクロフレームワークです。これは非常に軽いフレームワークであり、私たちがやりたいことを自由に行うことができます。
この章では、PythonとFlaskフレームワークを使用してプロジェクトをビルドします。
フラスコの起動と構成
最も広く使用されているPythonライブラリと同様に、FlaskパッケージはPython Package Index(PPI)からインストールできます。最初にディレクトリを作成しましょう(この章では、というディレクトリを作成しましたflaskProject)次に、仮想環境を作成しました(そしてそれを flaskEnv)プロジェクトに関連するすべての依存関係がロードされます(フラスコを含む)。また、flask-sqlalchemyをインストールして、flaskアプリケーションがSQLデータベースと簡単に通信できるようにすることもできます。
フラスコを取り付けた後、flaskEnv(仮想環境名)は次のように表示されます-
フラスコでアプリを作成する
フラスコを取り付けることで、簡単な「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)
アプリケーションを再起動すると、以下のコード行を使用して、さまざまなURLでさまざまな出力を取得します-
$ python app.py
Running on http://localhost:5000/
ブラウザに次の出力が表示されます-
次のように、ブラウザで他のURLを試すことができます-
Running on http://localhost:5000/hello, will give the following output −
Running on http://localhost:5000/members, will give −
Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −
ただし、通常は(上記のように)文字列を返したくないので、テンプレートを返します。そのために、関数「render_template」をフラスコから送信し、いくつかの入力を指定してrender_templateを返します。だから、以下の関数は私たちの仕事をします-
from flask import render_template
return render_template(‘home.html’)
フォルダテンプレートを作成し、その中にhome.htmlファイルを配置しましょう。
次に、レイアウトについて説明します。すべてのテンプレートにhtmlのheadタグとbodyタグを使用する代わりに、headとbodyタグを含め、現在のビューまたは現在のテンプレートをラップするレイアウトを設計します。そのためには、1つの個別のファイルを作成して呼び出す必要がありますlayout.html。これには、通常のヘッドタグ、ボディタグ、およびその他すべての必要なタグを配置できます。
次のコード行で新しいlayout.htmlを作成できます-
<!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/_navbar.html' %}
<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を使用してブートストラップを有効にします。
次に、すべてのページにナビゲーションバーを作成する必要があります。そのためには、最初にincludeフォルダーを作成してから、その中に_navbar.htmlファイルを作成する必要があります。_navbar.htmlでは、getbootstrap.comの標準スターターテンプレートを使用する必要があります。新しく作成された_navbar.htmlファイルは次のようになります-
そして、この_navbar.htmlファイルをlayout.htmlファイルに含めます。
{% include 'includes/_navbar.html' %}
レイアウトブロックがあるので、このブロックをホームファイル(home.html)で拡張できます。
私たちのhome.htmlファイルは以下のコードを使用して作成できます-
{% extends 'layout.html' %}
{% 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.html。
appflask.pyのタブルートについては以下のようになります−
about.htmlファイルには以下の内容が含まれます-
これで、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
以下はのコードです articles.html、各uidの記事タイトルが表示されます。
{% extends 'layout.html' %}
{% 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は軽量であるため、最も人気のあるPythonWebフレームワークの1つです。マイクロですが、拡張可能なPythonWebフレームワークです。必要な機能を提供することにより、flaskは単純なWebアプリケーションの開発を加速します。したがって、Flaskは、より小さく、それほど複雑でないアプリケーションに適しています。