Exécuter Python en HTML

Vaibhav Vaibhav 10 octobre 2023
  1. Exécuter des scripts Python en HTML à l’aide de PHP
  2. Exécuter un script Python en HTML à l’aide de Django
Exécuter Python en HTML

Le développement Web est un vaste domaine, et les opportunités et les choses que nous pouvons faire sont infinies. Avec la complexité et la demande viennent les exigences. Lors de la création de pages Web dynamiques, nous devons souvent effectuer des tâches qui nécessitent l’aide d’un langage de programmation tel que Python ou PHP. Dans cet article, nous allons apprendre à exécuter un script Python en HTML. Nous allons parler de quelques façons dont nous pouvons y parvenir.

Exécuter des scripts Python en HTML à l’aide de PHP

Nous pouvons utiliser PHP ou Hypertext Preprocessor pour exécuter des scripts Python en HTML. Référez-vous au code suivant qui décrit un exemple simple.

Fichier HTML - index.html

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

Fichier Python - script.py

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

Cela imprimera ce qui suit dans la console.

a = 2000
b = 21
a + b = 2021

Si nous voulons transmettre des valeurs aux scripts Python, nous pouvons utiliser le code suivant.

Fichier 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>

Maintenant, le script Python se présentera comme suit.

Fichier 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}")

La sortie restera la même, comme indiqué ci-dessus.

Exécuter un script Python en HTML à l’aide de Django

Django est un framework de développement Web célèbre et robuste basé sur Python. Comme il est basé sur Python, il facilite l’exécution de scripts Python à l’intérieur du HTML. Pour ce faire, nous utilisons des balises de modèle. Django a des balises de modèle prédéfinies telles que date, linebreaks, safe, random, etc. Vous pouvez en apprendre plus à leur sujet ici.

Étant donné que Django est très personnalisable, il offre aux développeurs un moyen simple de créer leurs balises de modèle personnalisées. À l’aide de balises de modèle, nous pouvons renvoyer des données aux modèles HTML, qui peuvent être intégrés à l’intérieur du modèle HTML.

Suivez les étapes suivantes pour créer une balise de modèle simple. Nous supposons que nous avons une application core dans notre projet Django.

  • Créez un nouveau répertoire, templatetags, à l’intérieur de l’application core. Le répertoire de l’application devrait ressembler à ceci.
    core/
    	__init__.py
        models.py
        admin.py
    	views.py
        urls.py
        ...
        templatetags/
    		__init__.py
    		...
    
  • Dans le dossier templatetags, créez un fichier Python nommé my_custom_tags.py.
  • Dans ce fichier, ajoutez le code suivant.
    from django import template
    
    register = template.Library()
    
    
    @register.simple_tag
    def my_tag():
        return "Hello World from my_tag() custom template tag."
    

    Le module my_custom_tags.py contiendra toutes les balises du modèle personnalisé. Comme indiqué dans le code ci-dessus, my_tag est une balise de modèle personnalisée que nous venons de créer et qui peut désormais être utilisée dans n’importe quel modèle HTML. Cette balise de modèle renverra "Hello World from my_tag() custom template tag." cette chaîne au modèle. Nous pouvons créer encore plus de balises de modèle ici pour effectuer des tâches spécifiques et courantes.

  • Maintenant que nous avons créé notre première balise de modèle, il est temps de la charger dans notre modèle HTML et de l’utiliser.
    {% 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>
    

    Nous chargeons d’abord le module my_custom_tags.py à l’intérieur du modèle. Une fois le module chargé, nous pouvons maintenant utiliser les balises du modèle définies à l’intérieur du module my_custom_tags. Notez qu’il est important de charger d’abord un module avec des balises de modèle personnalisées avant d’utiliser ces balises de modèle.

Au lieu d’utiliser une balise de modèle, nous pouvons également créer un point de terminaison et envoyer une requête AJAX à ce point de terminaison pour effectuer une tâche ou obtenir des données. Nous pouvons utiliser fetch() ou jquery ou toute autre méthode disponible pour faire une requête AJAX. Lors de la création d’un point de terminaison pour gérer une requête AJAX, il est important de s’assurer que le point de terminaison est sécurisé et ne donne pas un accès facile aux données sensibles ou aux fonctionnalités du site Web. Puisque n’importe qui peut faire des requêtes AJAX s’il connaît le point de terminaison, nous pouvons y ajouter la validation CSRF (Cross Site Request Forgery) et le configurer pour ne gérer que les requêtes POST. Les données POST doivent contenir le jeton CSRF.

Vous pouvez en savoir plus sur CSRF ici.

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.