HTML で Python を実行する
Web 開発は広大な分野であり、私たちにできることは無限にあります。複雑さと需要に伴い、要件が発生します。動的な Web ページを構築する場合、Python や PHP などのプログラミング言語の支援を必要とするタスクを実行しなければならないことがよくあります。この記事では、HTML で Python スクリプトを実行する方法を学習します。これを達成するためのいくつかの方法について説明します。
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 には、date
、linebreaks
、safe
、random
などのビルド済みのテンプレートタグがいくつかあります。詳細については、こちらを参照します。
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 の詳細についてはこちらを参照します。