在 HTML 中執行 Python

Vaibhav Vaibhav 2023年1月30日 2021年12月4日
  1. 在 HTML 中使用 PHP 執行 Python 指令碼
  2. 在 HTML 中使用 Django 執行 Python 指令碼
在 HTML 中執行 Python

Web 開發是一個廣闊的領域,我們可以做無限的機會和事情。伴隨著複雜性和需求而來的是需求。在構建動態網頁時,我們經常要執行一些需要藉助某種程式語言(例如 Python 或 PHP)的任務。在本文中,我們將學習如何在 HTML 中執行 Python 指令碼。我們將討論實現這一目標的幾種方法。

在 HTML 中使用 PHP 執行 Python 指令碼

我們可以使用 PHPHypertext Preprocessor 在 HTML 中執行 Python 指令碼。參考下面的程式碼描述了一個簡單的例子。

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。app 目錄應該看起來像這樣。
    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 請求時,確保端點是安全的並且不會提供對敏感資料或網站功能的輕鬆訪問是很重要的。由於任何人都可以在知道端點的情況下發出 AJAX 請求,因此我們可以向其新增 CSRF(跨站點請求偽造)驗證並將其配置為僅處理 POST 請求。POST 資料應包含 CSRF 令牌。

你可以在此處瞭解有關 CSRF 的更多資訊

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub