<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>開発者用ドキュメント</title><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/</link><description>Recent content on 開発者用ドキュメント</description><generator>Hugo -- gohugo.io</generator><language>ja</language><atom:link href="https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.1-%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%A8url%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.1-%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%A8url%E3%83%93%E3%83%AB%E3%83%80%E3%83%BC/</guid><description>3.1 ルーティングとURLビルダー # この記事では、FlaskのルーティングとURLビルダーについて説明します。ルーティングは、URLと関数を関連付ける重要な概念です。URLビルダーは、アプリケーション内でURLを動的に生成するためのツールです。
1. ルーティング # ルーティングは、クライアントからのリクエストに対して適切なビュー関数を呼び出すための仕組みです。Flaskでは、デコレータ@app.route()を使ってルーティングを定義します。
以下の例では、/というURLにアクセスしたときに、index関数が呼び出されます。
@app.route(&amp;#39;/&amp;#39;) def index(): return &amp;#39;Hello, World!&amp;#39; 2. ルーティング変数 # URL内に変数を含めることができます。これにより、動的なURLを生成できます。変数は、URL内で&amp;lt;variable_name&amp;gt;の形式で指定します。
以下の例では、/user/というURLにアクセスしたときに、user関数が呼び出されます。また、部分は、関数の引数として渡されます。
@app.route(&amp;#39;/user/&amp;lt;username&amp;gt;&amp;#39;) def user(username): return f&amp;#39;Hello, {username}!&amp;#39; 変数の型も指定できます。例えば、&amp;lt;int:user_id&amp;gt;と指定すると、user_id変数は整数型として扱われます。
3. HTTPメソッド # HTTPメソッドは、リクエストの種類を表すもので、GET、POST、PUT、DELETEなどがあります。デフォルトでは、FlaskのルーティングはGETメソッドに対応します。他のHTTPメソッドを対応させるには、methodsパラメータを使って指定します。
以下の例では、/loginというURLに対してGETとPOSTの両方のメソッドに対応しています。
@app.route(&amp;#39;/login&amp;#39;, methods=[&amp;#39;GET&amp;#39;, &amp;#39;POST&amp;#39;]) def login(): if request.method == &amp;#39;POST&amp;#39;: return &amp;#39;ログイン処理&amp;#39; else: return &amp;#39;ログインフォーム&amp;#39; 4. URLビルダー # URLビルダーは、アプリケーション内でURLを動的に生成するためのツールです。Flaskでは、url_for関数を使ってURLを生成できます。
以下の例では、url_for関数を使ってuser関数に対応するURLを生成しています。
from flask import url_for url = url_for(&amp;#39;user&amp;#39;, username=&amp;#39;John&amp;#39;) url_for関数の第1引数は、関数名（エンドポイント名）です。2引数以降は、URL内の変数に対応するキーワード引数を指定します。上記の例では、username変数に&amp;rsquo;John&amp;rsquo;を指定しています。
生成されたURLは、アプリケーションの設定やルーティングに応じて変わります。このため、url_for関数を使ってURLを生成することで、アプリケーション内で一貫したURLを維持できます。
また、url_for関数は、外部URLや静的ファイルのURLを生成することもできます。例えば、静的ファイルのURLを生成するには、url_for(&amp;lsquo;static&amp;rsquo;, filename=&amp;lsquo;path/to/file&amp;rsquo;)と指定します。
url = url_for(&amp;#39;static&amp;#39;, filename=&amp;#39;css/styles.</description></item><item><title/><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.2-http%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89-get-post-put-delete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.2-http%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89-get-post-put-delete/</guid><description>3.2 HTTPメソッド (GET, POST, PUT, DELETE) # この記事では、HTTPメソッド（GET, POST, PUT, DELETE）について説明し、Flaskでこれらのメソッドをどのように扱うかを解説します。
HTTPメソッドは、クライアント（通常はWebブラウザ）からサーバーに送信されるリクエストの種類を示します。主要なHTTPメソッドは以下の通りです。
GET: リソースの取得 POST: リソースの作成 PUT: リソースの更新 DELETE: リソースの削除 1. GETメソッド # GETメソッドは、指定されたリソースを取得するために使用されます。Flaskでは、デフォルトでルーティングはGETメソッドに対応します。例えば、以下のようなルーティングはGETメソッドに対応しています。
@app.route(&amp;#39;/&amp;#39;) def index(): return &amp;#39;Hello, World!&amp;#39; 2. POSTメソッド # POSTメソッドは、新しいリソースを作成するために使用されます。通常、フォームのデータを送信する際に使用されます。FlaskでPOSTメソッドを扱うには、ルーティングでmethodsパラメータに&amp;rsquo;POST&amp;rsquo;を指定します。
from flask import request @app.route(&amp;#39;/post&amp;#39;, methods=[&amp;#39;POST&amp;#39;]) def post(): data = request.form # データを処理 return &amp;#39;データを受信しました&amp;#39; 3. PUTメソッド # PUTメソッドは、既存のリソースを更新するために使用されます。PUTメソッドをFlaskで扱うには、同様にmethodsパラメータで&amp;rsquo;PUT&amp;rsquo;を指定します。
from flask import request @app.route(&amp;#39;/update&amp;#39;, methods=[&amp;#39;PUT&amp;#39;]) def update(): data = request.form # データを処理 return &amp;#39;データを更新しました&amp;#39; 4.</description></item><item><title/><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.3-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3-jinja2-%E3%81%AE%E5%9F%BA%E6%9C%AC/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.3-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3-jinja2-%E3%81%AE%E5%9F%BA%E6%9C%AC/</guid><description>3.3 テンプレートエンジン (Jinja2) の基本 # この記事では、Flaskで使用されるテンプレートエンジンであるJinja2について解説します。テンプレートエンジンとは、HTMLやテキストファイルにプログラムで生成されたデータを埋め込むことができる仕組みです。Jinja2を使用することで、PythonのデータをHTMLに簡単に埋め込むことができます。
1. テンプレートの作成 # まず、プロジェクトのルートディレクトリにtemplatesという名前のフォルダを作成します。このフォルダ内にHTMLテンプレートファイルを配置します。
例として、以下のようなindex.htmlファイルを作成してみましょう。
&amp;lt;!DOCTYPE html&amp;gt; &amp;lt;html lang=&amp;#34;en&amp;#34;&amp;gt; &amp;lt;head&amp;gt; &amp;lt;meta charset=&amp;#34;UTF-8&amp;#34;&amp;gt; &amp;lt;title&amp;gt;{{ title }}&amp;lt;/title&amp;gt; &amp;lt;/head&amp;gt; &amp;lt;body&amp;gt; &amp;lt;h1&amp;gt;{{ heading }}&amp;lt;/h1&amp;gt; &amp;lt;p&amp;gt;{{ content }}&amp;lt;/p&amp;gt; &amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt; 上記のHTMLファイルでは、{{ }}で囲まれた部分がJinja2のテンプレート構文です。この部分にPythonのデータが埋め込まれます。
2. テンプレートのレンダリング # Flaskでテンプレートをレンダリングするには、render_template関数を使用します。以下は、index.htmlテンプレートをレンダリングする例です。
from flask import Flask, render_template app = Flask(__name__) @app.route(&amp;#39;/&amp;#39;) def index(): title = &amp;#39;Hello, Jinja2&amp;#39; heading = &amp;#39;Jinja2の基本&amp;#39; content = &amp;#39;これはJinja2テンプレートエンジンの基本的な使い方です。&amp;#39; return render_template(&amp;#39;index.html&amp;#39;, title=title, heading=heading, content=content) if __name__ == &amp;#39;__main__&amp;#39;: app.</description></item><item><title/><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.4-%E9%9D%99%E7%9A%84%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%89%B1%E3%81%84/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.4-%E9%9D%99%E7%9A%84%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%89%B1%E3%81%84/</guid><description>3.4 静的ファイルの扱い # ウェブアプリケーションでは、CSSやJavaScript、画像などの静的ファイルが必要になることがあります。Flaskでは、これらの静的ファイルの管理が容易になるように設計されています。この記事では、Flaskで静的ファイルを扱う方法について解説します。
1. 静的ファイルの格納場所 # Flaskアプリケーションでは、staticという名前のフォルダをプロジェクトのルートディレクトリに作成して、その中に静的ファイルを格納します。以下は、一般的な静的ファイルのフォルダ構成です。
static/ └─ css/ └─ js/ └─ img/ 2. 静的ファイルへのリンク # HTMLテンプレート内で静的ファイルを参照するには、url_for()関数を使用します。これにより、静的ファイルへの正しいURLが生成されます。例えば、CSSファイルをリンクする場合は以下のように書きます。
&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;{{ url_for(&amp;#39;static&amp;#39;, filename=&amp;#39;css/style.css&amp;#39;) }}&amp;#34;&amp;gt; JavaScriptファイルや画像ファイルも同様に、url_for()関数を使ってリンクします。
&amp;lt;script src=&amp;#34;{{ url_for(&amp;#39;static&amp;#39;, filename=&amp;#39;js/main.js&amp;#39;) }}&amp;#34;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;img src=&amp;#34;{{ url_for(&amp;#39;static&amp;#39;, filename=&amp;#39;img/logo.png&amp;#39;) }}&amp;#34; alt=&amp;#34;Logo&amp;#34;&amp;gt; 3. 静的ファイルのキャッシュ制御 # ウェブアプリケーションでは、静的ファイルのキャッシュを適切に制御することが重要です。Flaskでは、send_static_file関数を使って、静的ファイルのキャッシュ制御をカスタマイズできます。例えば、以下のようにapp.pyに@app.route()デコレータを使用して新たなルートを作成し、send_static_file関数でCSSファイルを返すことができます。
from flask import Flask, send_static_file app = Flask(__name__) @app.route(&amp;#39;/custom_css&amp;#39;) def custom_css(): response = send_static_file(&amp;#39;css/style.css&amp;#39;) response.cache_control.max_age = 60 # キャッシュの有効期限を60秒に設定 return response if __name__ == &amp;#39;__main__&amp;#39;: app.</description></item><item><title/><link>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.5-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%87%A6%E7%90%86/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://developer.jamstack-media.com/docs/flask/3.-flask%E3%81%AE%E5%9F%BA%E6%9C%AC/3.5-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%87%A6%E7%90%86/</guid><description>3.5 フォームの処理 # ウェブアプリケーションでは、ユーザーからの入力を受け付けるためにフォームがよく使われます。この記事では、Flaskでフォームを処理する方法について解説します。
1. WTFormsのインストール # Flaskでフォームを簡単に扱うために、WTFormsというライブラリを使用します。まずは、WTFormsをインストールしましょう。
$ pip install WTForms 2. フォームクラスの定義 # WTFormsを使って、フォームの構造を定義するフォームクラスを作成します。例として、ユーザー登録用のフォームを定義してみましょう。フォームクラスは以下のように作成します。
from wtforms import Form, StringField, PasswordField, validators class RegistrationForm(Form): username = StringField(&amp;#39;Username&amp;#39;, [ validators.Length(min=4, max=25, message=&amp;#39;Username must be between 4 and 25 characters long&amp;#39;), validators.InputRequired(message=&amp;#39;Username is required&amp;#39;) ]) email = StringField(&amp;#39;Email&amp;#39;, [ validators.Length(min=6, max=50, message=&amp;#39;Email must be between 6 and 50 characters long&amp;#39;), validators.Email(message=&amp;#39;Invalid email address&amp;#39;), validators.InputRequired(message=&amp;#39;Email is required&amp;#39;) ]) password = PasswordField(&amp;#39;Password&amp;#39;, [ validators.</description></item></channel></rss>