HTML で Python を実行する

  1. HTML で PHP を使用して Python スクリプトを実行する
  2. HTML で Django を使用して Python スクリプトを実行する

Web 開発は広大な分野であり、私たちにできることは無限にあります。複雑さと需要に伴い、要件が発生します。動的な Web ページを構築する場合、Python や PHP などのプログラミング言語の支援を必要とするタスクを実行しなければならないことがよくあります。この記事では、HTML で Python スクリプトを実行する方法を学習します。これを達成するためのいくつかの方法について説明します。

[手を動かしながら学ぶIP...
[手を動かしながら学ぶIPネットワーク] #5 RIP

HTML で PHP を使用して Python スクリプトを実行する

PHP または Hypertext Preprocessor を使用して、Python スクリプトを HTML で実行できます。次のコードを参照して、簡単な例を示します。

HTML ファイル-index.html

<html>
    <head>
        <title>Running a Python script</title>
        <?PHP
        echo shell_exec("python script.py");
        ?>
        </head>
    <body>
        <!-- BODY -->
    </body>
</html>

Python ファイル - script.py

a = 2000
b = 21
print(f"a = {a}")
print(f"b = {b}")
print(f"a + b = {a + b}")

これにより、コンソールに次のように出力されます。

a = 2000
b = 21
a + b = 2021

Python スクリプトにいくつかの値を渡したい場合は、次のコードを使用できます。

HTML ファイル - index.html

<html>
    <head>
        <title>Running a Python script</title>
        <?PHP
        echo shell_exec("python script.py \"Parameter #1\" \"Parameter #2\"");
        ?>
        </head>
    <body>
        <!-- BODY -->
    </body>
</html>

これで、Python スクリプトは次のようになります。

Python ファイル - script.py

import sys
a = sys.argv[1]
b = sys.argv[2]
print(f"a = {a}")
print(f"b = {b}")
print(f"a + b = {a + b}")

上記のように、出力は同じになります。

HTML で Django を使用して Python スクリプトを実行する

Django は、有名で堅牢な Python ベースの Web 開発フレームワークです。Python ベースであるため、HTML 内で Python スクリプトを簡単に実行できます。これを行う方法は、テンプレートタグを使用することです。Django には、datelinebreakssaferandom などのビルド済みのテンプレートタグがいくつかあります。詳細については、こちらを参照します。

Django は非常にカスタマイズ可能であるため、開発者はカスタムテンプレートタグを簡単に作成できます。テンプレートタグを使用して、HTML テンプレートにデータを返すことができます。HTML テンプレートは、HTML テンプレート内に埋め込むことができます。

次の手順に従って、簡単なテンプレートタグを作成します。Django プロジェクトに core アプリケーションがあることを前提としています。

  • core アプリケーション内に新しいディレクトリ templatetags を作成します。アプリのディレクトリは次のようになります。
    core/
        __init__.py
        models.py
        admin.py
        views.py
        urls.py
        ...
        templatetags/
            __init__.py
            ...
    
  • templatetags フォルダー内に、my_custom_tags.py という名前の Python ファイルを作成します。
  • このファイル内に、次のコードを追加します。
    from django import template
        
    register = template.Library()  
        
    @register.simple_tag
    def my_tag():
        return "Hello World from my_tag() custom template tag."
    

    my_custom_tags.py モジュールは、すべてのカスタムテンプレートタグを保持します。上記のコードに示されているように、my_tag は作成したばかりのカスタムテンプレートタグであり、任意の HTML テンプレート内で使用できるようになりました。このテンプレートタグは、"Hello World from my_tag() custom template tag." という文字列をテンプレートに返します。ここでさらに多くのテンプレートタグを作成して、特定の一般的なタスクを実行できます。

  • 最初のテンプレートタグを作成したので、それを HTML テンプレート内にロードして使用します。
    {% load static %}
    {% load my_custom_tags %}
        
    <!DOCTYPE html>
    <html lang="en" dir="ltr">
        <head>
            <title>Intro</title>
        </head>
        <body>
            <p>{% my_tag %}</p>
        </body>
    </html>
    

    まず、テンプレート内に my_custom_tags.py モジュールをロードします。モジュールがロードされると、my_custom_tags モジュール内で定義されたテンプレートタグを使用できるようになります。これらのテンプレートタグを使用する前に、まずカスタムテンプレートタグを使用してモジュールをロードすることが重要であることに注意してください。

テンプレートタグを使用する代わりに、エンドポイントを作成し、そのエンドポイントに AJAX リクエストを送信して、タスクを実行したり、データを取得したりすることもできます。fetch() または jquery またはその他の利用可能なメソッドを使用して、AJAX リクエストを作成できます。AJAX リクエストを処理するためのエンドポイントを作成する際、エンドポイントが安全であり、機密データや Web サイトの機能に簡単にアクセスできないようにすることが重要です。エンドポイントを知っていれば誰でも AJAX リクエストを作成できるため、CSRF(Cross Site Request Forgery)検証を追加して、POST リクエストのみを処理するように構成できます。POST データには CSRF トークンが含まれている必要があります。

CSRF の詳細についてはこちらを参照します。