Handling HTML Forms with CherryPy

Handling HTML Forms with CherryPy

Python: CherryPy


In the last article titled 'URLs with Parameters in CherryPy' (link is provided at the end), we made an application which performs mathematical operations in which operands were provided as parameters in the URL. We can improve the UX of our application by using HTML Forms to do this.

We will extend our previous application where '<application-name>/' opens the main page which contains the forms for the two methods square and power. We will use these forms to call the methods with the required parameters.

Save the below code in a file named 'html_forms.py'.

import cherrypy

class application:
def index(self):
return """<html>
<p>Call square function:<br>
<form method="get" action="square">
<input type="text" name="num" placeholder="num"/>
<button type="submit">Submit</button>
<p>Call power function:<br>
<form method="get" action="power">
<input type="text" name="num" placeholder="num"/>
<input type="text" name="pow" placeholder="pow"/>
<button type="submit">Submit</button>

def square(self, num=2):
return "The value of {} square is {}".format(num, int(num)**2)

def power(self, num=2, pow=2):
return "The value of {} to the power {} is {}".format(num, pow, int(num)**int(pow))

if __name__ == '__main__':

Here we can see the methods and the corresponding return values.

Notice that the index() method is returning a HTML code which contains two forms. The forms use the GET method and when we press the Submit button after providing parameter values, the form is sent and the corresponding method is called.

Run the code through the Terminal/Command Line as follows:

python3 html_forms.py

Now, if we enter http://localhost:8080/ in the address bar of a browser, the output will be something like this

Now we will call the square method with value, say, 9. The following output appears

Notice that the query-string in the URL shows the same parameter values we provided while submitting the form.

Similarly, we can call the power method. And the output will be something like this

HTML forms also support the POST method, in that case the query-string is not appended to the URL but is sent as the body of the client's request to the server. The result of the methods, however, remain the same.

Link to the article 'URLs with Parameters in CherryPy' :


More Articles of Aniket Sharma:

Name Views Likes
Pyperclip: Installation and Working 1050 2
Number Guessing Game using Python 720 2
Pyperclip: Not Implemented Error 1314 2
Hangman Game using Python 18425 2
Using Databases with CherryPy application 2059 2
nose: Working 557 2
pytest: Working 550 2
Open Source and Hacktoberfest 924 2
Managing Logs of CherryPy applications 1081 2
Top 20 Data Science Tools 740 2
Ajax application using CherryPy 882 2
REST application using CherryPy 722 2
On Screen Keyboard using Python 6999 2
Elastic Net Regression 914 2
US Presidential Election 2020 Prediction using Python 843 2
Sound Source Separation 1280 2
URLs with Parameters in CherryPy 1973 2
Testing CherryPy application 719 2
Handling HTML Forms with CherryPy 1700 2
Applications of Natural Language Processing in Businesses 563 2
NetworkX: Multigraphs 740 2
Tracking User Activity with CherryPy 1560 2
CherryPy: Handling Cookies 1063 2
Introduction to NetworkX 670 2
TorchServe - Serving PyTorch Models 1433 2
Fake News Detection Model using Python 795 2
Keeping Home Routers secure while working remotely 535 2
Email Slicer using Python 3095 2
NetworkX: Creating a Graph 1163 2
Best Mathematics Courses for Machine Learning 592 2
Hello World in CherryPy 836 2
Building dependencies as Meson subprojects 1147 2
Vehicle Detection System 1171 2
NetworkX: Examining and Removing Graph Elements 667 2
Handling URLs with CherryPy 591 2
PEP 8 - Guide to Beautiful Python Code 811 2
NetworkX: Drawing Graphs 688 2
Mad Libs Game using Python 715 2
Hosting Cherry applications 667 2
Top 5 Free Online IDEs of 2020 945 2
pytest: Introduction 570 2
Preventing Pwned and Reused Passwords 617 2
Contact Book using Python 2197 2
Introduction to CherryPy 594 2
nose: Introduction 542 2
Text-based Adventure Game using Python 3255 2
NetworkX: Adding Attributes 2761 2
NetworkX: Directed Graphs 1104 2
Dice Simulator using Python 621 2
Decorating CherryPy applications using CSS 954 2