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].
Brython can do this. It is a Python interpreter written in Javascript.
Here is html code using Brython that allows you to enter text then when clicking the uppercase button it turns the text to uppercase. Just copy the text below to a .html file and open it in your browser:
Uppercase
from browser import document
def clicked[ev]:
document["uppercase"].value = document["text"].value.upper[]
document["button"].bind["click", clicked]
Your Text:
Uppercase:
UPPERCASE
djangoHow to run a python script by clicking on an html button
requirements
step 1: Pip install django
step 2: Open your prompt window and create a directory called "django-webapp"
step 3: In your prompt window, navigate to django-webapp & run django-admin startproject geniusvoice [or your own django project name]
cd django-webapp
django-admin startproject geniusvoice
step 4: Navigate to geniusvoice
Checkpoint: step 1-4
step 5: create a folder called "my_templates"
step 6: create a file called "geniusvoice.html" in "my_templates" folder
cd. > my_templates/geniusvoice.html
step 7: create a file called "webapp.py" in "geniusvoice" folder
cd. > geniusvoice/geniusvoice.html
Checkpoint: step 5-7
step 8: Copy and paste this code in urls.py.
NOTE: make sure to replace the existing code in urls.py
"""geniusvoice URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
//docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path['', views.home, name='home']
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path['', Home.as_view[], name='home']
Including another URLconf
1. Import the include[] function: from django.urls import include, path
2. Add a URL to urlpatterns: path['blog/', include['blog.urls']]
"""
from django.contrib import admin
from django.conf.urls import url
from . import webapp
urlpatterns = [
url[r'^admin/', admin.site.urls],
url[r'^$', webapp.button],
url[r'^output', webapp.output,name="script"],
]
step 8: Copy and paste this code in webapp.py.
from django.shortcuts import render
def button[request]:
return render[request,'geniusvoice.html']
def output[request]:
output_data = "Genius Voice eliminates friction. For years people have had to learn to interact with computers, we turn this around. We teach computers how to interact with humans through voice. This creates a seamless experience without losing the human touch."
website_link = "Visit our website: " + "//www.geniusvoice.nl/"
return render[request,"geniusvoice.html",{"output_data":output_data, "website_link":website_link}]
step 9: Copy and paste this code in geniusvoice.html.
Genius Voice script
Click To Execute Script
{{output_data}}
{{website_link}}
step 10: Open settings.py, scroll down to "TEMPLATES" and paste 'my_templates' in the empty list
step 11: Open your prompt window and run this code:
step 12: Run this code in your prompt window:
python manage.py runserver
Copy and paste //127.0.0.1:8000/ in your browser