I've done exactly this on Windows. I have a local .html page that I use as a "dashboard" for all my current work. In addition to the usual links, I've been able to add clickable links that open MS-Word documents, Excel spreadsheets, open my IDE, ssh to servers, etc. It is a little involved but here's how I did it ...
First, update the Windows registry. Your browser handles usual protocols like http, https, ftp. You can define your own protocol and a handler to be
invoked when a link of that protocol-type is clicked. Here's the config [run with regedit
]
[HKEY_CLASSES_ROOT\mydb]
@="URL:MyDB Document"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\mydb\shell]
@="open"
[HKEY_CLASSES_ROOT\mydb\shell\open]
[HKEY_CLASSES_ROOT\mydb\shell\open\command]
@="wscript C:\_opt\Dashboard\Dashboard.vbs \"%1\""
With this, when I have a link like ProjectX
, clicking it will invoke C:\_opt\Dashboard\Dashboard.vbs
passing it the command line parameter open:ProjectX.docx
. My VBS code looks at this parameter and does the necessary thing [in this case, because it ends in .docx, it invokes MS-Word with ProjectX.docx
as the parameter to it.
Now, I've written my handler in VBS only because it is very old code [like 15+ years]. I haven't
tried it, but you might be able to write a Python handler, Dashboard.py
, instead. I'll leave it up to you to write your own handler. For your scripts, your link could be href="mydb:runpy:whatever.py"
[the runpy:
prefix tells your handle to run with Python].
The new PyScript project lets you embed Python programs directly in HTML pages and execute them within the browser without any server-based requirements.
The project was announced this weekend at PyCon US 2022 and acts as a wrapper around the Pyodide project, which loads the CPython interpreter as a WebAssembly browser module.
"PyScript is a framework that allows users to create rich Python applications in the browser using a mix of Python with standard HTML." explains Anaconda in a recent blog post.
"PyScript aims to give users a first-class programming language that has consistent styling rules, is more expressive, and is easier to learn."
While the Pyodide project previously allowed you to run Python in the browser, it takes some time to get used to the syntax and is not as elegant as simply writing a Python program and pasting it into your HTML page.
However, PyScript acts as a wrapper, allowing you to embed Python code directly between py-script
tags and have it automatically executed by Pyodide.
For example,
the following illustrates a small Hello World example using PyScript and its execution directly in the browser. Notice how the pyscript.write[]
function allows you to output data directly to an HTML element.
Developers can also extend PyScript pages through additional Python packages built into Pyodide or through ones stored on the local filesystem. PyScript's GETTING-STARTED.md file provides documentation on how to import packages into your code.
In addition to
executing code embedded in HTML, it's also possible to add a code editor directly into an HTML page using the py-repl
tag so that you can input code and execute it, as shown below.
Using the editor makes it easy to test code on the fly and see what will and won't work with PyScript.
While JavaScript can already perform almost everything you would want to create using PyScript, with Python considered the most popular programming language, PyScript opens the door for many interesting projects down the road.
To get started with PyScript, you can visit their GitHub project page, which also includes numerous code examples.
Created: October-06, 2021 | Updated: March-21, 2022
- Run Python Scripts in HTML using PHP
- Run Python script in HTML using Django
Web Development is a vast field, and there are endless opportunities and things that we can do. With complexity and demand come requirements. When building dynamic web pages, we often have to perform tasks that require the assistance of some programming language such as Python or PHP. In this article, we will learn how to run a Python script in HTML. We will talk about a few ways in which we can achieve this.
Run Python Scripts in HTML using PHP
We can use PHP
or Hypertext Preprocessor
to run Python scripts in HTML. Refer following code depicts a simple example.
HTML
File - index.html
Running a Python script
Python File - script.py
a = 2000
b = 21
print[f"a = {a}"]
print[f"b = {b}"]
print[f"a + b = {a + b}"]
This will print the following in the console.
a = 2000
b = 21
a + b = 2021
If we want to pass some values to the Python scripts, we can use the following code.
HTML File - index.html
Running a Python script
Now, the Python script will look as follows.
Python File - 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}"]
The output will remain the same, as shown above.
Run Python script in HTML using Django
Django is a famous and robust Python-based web development framework. Since it is Python-based, it makes it easier to run Python scripts inside the HTML. The way we do this is by using template tags. Django has some pre-built template tags such as date
, linebreaks
, safe
, random
, etc. You can learn more about them
here.
Since Django is very customizable, it offers developers an easy way to create their custom template tags. Using template tags, we can return data to HTML templates, which can be embedded inside the HTML template.
Follow the following steps to create a simple template tag. We are assuming that we have a core
application in our
Django project.
- Create a new directory,
templatetags
, inside thecore
application. The app directory should look something like this.core/ __init__.py models.py admin.py views.py urls.py ... templatetags/ __init__.py ...
- Inside the
templatetags
folder, create a Python file namedmy_custom_tags.py
. - Inside this file, add the following code.
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
module will hold all the custom template tags. As shown in the code above,my_tag
is a custom template tag that we just created and now it can be used inside any HTML template. This template tag will return"Hello World from my_tag[] custom template tag."
this string to the template. We can create even more template tags here to perform specific and common tasks. - Now that we have created our first template tag, it is time to load it inside our HTML template and use it.
{% load static %} {% load my_custom_tags %} Intro
{% my_tag %}
We first load the
my_custom_tags.py
module inside the template. Once the module is loaded, we can now use the template tags defined inside themy_custom_tags
module. Note that it is important to first load a module with custom template tags before using those template tags.
Instead of using a template tag, we can also create an end-point and make an AJAX request to that end-point to perform some task or get some data. We can use fetch[]
or jquery
or any other available method to make an AJAX request. While making an end-point to handle an AJAX request, it is important to ensure that the end-point is secure and doesn’t give easy access to sensitive data or website features. Since anyone can make AJAX requests if they know the
end-point, we can add CSRF [Cross Site Request Forgery
] validation to it and configure it to handle only POST requests. The POST data should contain the CSRF token.
You can learn more about CSRF here