フラスコフレームワーク

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は、より小さく、それほど複雑でないアプリケーションに適しています。