Python-web-development-libraries-flask-framework

提供:Dev Guides
移動先:案内検索

フラスコフレームワーク

Flaskは、外部ライブラリにほとんど依存しないマイクロフレームワークです。 それは非常に軽いフレームワークであり、私たちがやりたいことを何でもする自由を与えます。

この章では、PythonとFlaskフレームワークを使用してプロジェクトをビルドします。

Flaskの起動と構成

最も広く使用されているpythonライブラリと同様に、FlaskパッケージはPython Package Index(PPI)からインストールできます。 最初にディレクトリを作成します(この章では、 flaskProject というディレクトリを作成しました)。次に、プロジェクト関連のすべての依存関係が読み込まれる(flaskを含む)仮想環境を作成します( flaskEnv と呼びます)。 また、flask-sqlalchemyをインストールして、フラスコアプリケーションがSQLデータベースと簡単に通信できるようにすることもできます。

フラスコをインストールした後、flaskEnv(私たちのvirtualEnvironment名)は以下のようなものが表示されます-

Flask Startup

フラスコでアプリを作成する

フラスコをインストールすることにより、次のように非常に少ないコード行でシンプルな「 hello application in flask 」を作成できます-

フラスコの作成

端末に次のように入力します-

$python flaskapp.py

そして、あなたは次の出力を見ることができます-

*http://127.0.0.1:5000/* または *localhost:5000* で実行

Running Localhost

以下は、サンプルコードで行ったことの説明です-

  • まず、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/で実行すると、次の出力が表示されます-*

Localhost 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ファイルは次のようになります-

Navbar

そして、この_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ファイルは以下の内容になります-

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

以下は 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は、小規模で複雑でないアプリケーションに適しています。