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>
<head></head>
<body>
<p>Call square function:<br>
<form method="get" action="square">
<input type="text" name="num" placeholder="num"/>
<button type="submit">Submit</button>
</form>
</p>
<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>
</form>
</p>
</body>
</html>"""
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__':
cherrypy.quickstart(application())
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' :
Comments