在 HTML 中运行 Python

Vaibhav Vaibhav 2023年10月10日
  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
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.