
Here is a simple exercise to show how the template works for a static game of MadLibs. You could expand this exercise to have the user input each item as well.
Set Up the Python File "madlib_build.py":
The Python string Template is created by passing the template string to its constructor. It supports $-based substitutions. Here I'm using the template.safe_substitute method so that a KeyError is not thrown if a key is missing.
from string import Template madlib_template_text = open('madlib_template.html').read() template = Template(madlib_template_text) mathlib_html = template.safe_substitute( title="Hallowe'en", plural_noun_1 = "pencils", plural_noun_2 = "bananas", plural_noun_3 = "cigars", noun_1 = "grandfather clock", noun_2 = "moped", noun_3 = "scissors", noun_4 = "eraser", verb_1 = "dance", verb_2 = "cook", adverb_1 = "slowly", ) open('madlib.html', 'w+').write(madlib_html)
Set Up the HTML Template Page "madlib_template.html"
I used Bootstrap for an easy display method. You'll notice that each variable maps/substitutes for each respective ${item-name}
. For example, the &{title}
relates to title = "Hallowe'en"
in the Python file.
<html lang="en"> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>${title} - Mad Lib</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> </head> <body> <div class="container"> <div class="row"> <div class="col"> <h1>${title} - Mad Lib</h1> </div> <div class="col-sm-8"> <p>Hallowe'en is my favourite holiday, because we get to dress up in ${plural_noun_1} and visit ${plural_noun_2} in our ${noun_1} saying "${noun_2} or ${noun_3}!"</p> <p>I also love to ${verb_1} ${plural_noun_3} for hallowe'en! I use special carving tools to ${adverb_1} ${verb_2} a face into my ${noun_4}.</p> </div> </div> </body> </html>