<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://script.spoken-tutorial.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=Python-Flask%2FC2%2FFirst-Flask-Web-App%2FEnglish</id>
		<title>Python-Flask/C2/First-Flask-Web-App/English - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=Python-Flask%2FC2%2FFirst-Flask-Web-App%2FEnglish"/>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;action=history"/>
		<updated>2026-05-14T13:30:52Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45932&amp;oldid=prev</id>
		<title>Nancyvarkey at 11:41, 18 February 2019</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45932&amp;oldid=prev"/>
				<updated>2019-02-18T11:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 11:41, 18 February 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 101:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 101:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And hover over flask foder.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;And hover over flask foder.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Look at the '''directory structure&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Look at the '''directory&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;structure &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;at the left pane of the '''Atom text editor''' window.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Observe that there is no '''flask''' folder in the '''project'''. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Observe that there is no '''flask''' folder in the '''project'''. &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 107:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So how does the '''compiler''' find and import the '''Flask module'''?&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So how does the '''compiler''' find and import the '''Flask module'''?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Python''' is set to look for '''modules''' in the '''site&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;-&lt;/del&gt;packages'''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;'''Python''' is set to look for '''modules''' in the '''site &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;hyphen &lt;/ins&gt;packages'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Highlight&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Highlight&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 303:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 303:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;atom hello_flask.py&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;atom hello_flask.py&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Now we will write code for a '''dynamic''' '''route''' and also define a '''view function''' called '''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;hello_user&lt;/del&gt;'''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Now we will write code for a '''dynamic''' '''route''' and also define a '''view function''' called '''&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;hello underscore user&lt;/ins&gt;'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Switch to '''the editor window.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Switch to '''the editor window.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 320:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 320:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@app.route('/user/&amp;lt;username&amp;gt;')&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;@app.route('/user/&amp;lt;username&amp;gt;')&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| This '''route''' has a '''URL''', '''home&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/&lt;/del&gt;user&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/&amp;lt;&lt;/del&gt;username&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;gt;&lt;/del&gt;'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| This '''route''' has a '''URL''', '''home &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;slash &lt;/ins&gt;user &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;slash &lt;/ins&gt;username'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;where '''home''' is the '''root&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''' '''&lt;/del&gt;domain&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''' '''&lt;/del&gt;URL''' of the '''server'''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;where '''home''' is the '''root domain URL''' of the '''server'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;whereas, '''username''' is a '''variable'''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;whereas, '''username''' is a '''variable'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We will use this '''variable '''in the '''view&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''' '''&lt;/del&gt;function''' to change the content in the browser.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;We will use this '''variable '''in the '''view function''' to change the content in the browser.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|- &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Highlight&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|| Highlight&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Nancyvarkey</name></author>	</entry>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45603&amp;oldid=prev</id>
		<title>Pravin1389 at 09:20, 28 January 2019</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45603&amp;oldid=prev"/>
				<updated>2019-01-28T09:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;amp;diff=45603&amp;amp;oldid=45566&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Pravin1389</name></author>	</entry>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45566&amp;oldid=prev</id>
		<title>SiddharthaSarkar: Script synced with video.</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45566&amp;oldid=prev"/>
				<updated>2019-01-21T11:37:24Z</updated>
		
		<summary type="html">&lt;p&gt;Script synced with video.&lt;/p&gt;
&lt;a href=&quot;https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;amp;diff=45566&amp;amp;oldid=45367&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>SiddharthaSarkar</name></author>	</entry>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45367&amp;oldid=prev</id>
		<title>SiddharthaSarkar: Created page with &quot;'''Title of script: First Flask web application'''  '''Author: Siddhartha Sarkar'''  Keywords: ​Video tutorial, Python Flask, Hello World, Routes, View Functions, HTTP proto...&quot;</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Python-Flask/C2/First-Flask-Web-App/English&amp;diff=45367&amp;oldid=prev"/>
				<updated>2018-12-25T22:32:43Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Title of script: First Flask web application&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;Author: Siddhartha Sarkar&amp;#039;&amp;#039;&amp;#039;  Keywords: ​Video tutorial, Python Flask, Hello World, Routes, View Functions, HTTP proto...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Title of script: First Flask web application'''&lt;br /&gt;
&lt;br /&gt;
'''Author: Siddhartha Sarkar'''&lt;br /&gt;
&lt;br /&gt;
Keywords: ​Video tutorial, Python Flask, Hello World, Routes, View Functions, HTTP protocol.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border-spacing:0;width:16.695cm;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
| align=center| '''Visual Cue'''&lt;br /&gt;
| align=center| '''Narration'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 1: First Flask web app'''&lt;br /&gt;
|| Welcome to the spoken tutorial on''' '''the first '''Flask web application.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 2: Learning Objectives'''&lt;br /&gt;
|| In this tutorial, we will learn&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;To write and analyze our first '''Flask application'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;The concept of '''Routes '''and''' View''' '''functions'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;About '''Dynamic content''' served by dynamic '''URLs'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slides 3: System Requirements'''&lt;br /&gt;
|| To record this tutorial, I’m using&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Ubuntu Linux 16.04''' '''OS'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Python''' '''3.5.2'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Atom text editor 1.22.1 '''and''' '''&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Firefox web browser'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can use any text editor and web browser of your choice.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 5:'''&lt;br /&gt;
&lt;br /&gt;
'''Pre-requisites'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|| To follow this tutorial, you should have working knowledge on&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Linux commands''' and&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;Basic '''Python programming'''&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, then please go through the corresponding tutorials on this website. http://spoken-tutorial.org&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | Open a Terminal window&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | Let us open the '''Terminal''' by pressing '''Ctrl''', '''Alt''' and '''T''' keys simultaneously on the keyboard.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:0.5pt solid #000001;padding:0.106cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
Type cd project_flask &amp;amp; Press Enter&lt;br /&gt;
|| Now go to the folder '''project underscore flask''' which we created earlier using '''cd''' '''command.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ . flask_venv/bin/activate&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
|| Let us activate our '''vitualenv'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type the command&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dot space flask_venv slash bin slash activate'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And press '''Enter'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(dot)''' refers to the present working '''directory'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
Highlight (flask_venv)&lt;br /&gt;
|| Notice that we are now inside the''' virtual environment flask_venv.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| &lt;br /&gt;
|| Open the file '''hello_flask.py '''in a '''text editor'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I will be using the '''atom text editor '''but you can use your prefered '''text editor.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ atom hello_flask.py&lt;br /&gt;
|| I will type the command.&lt;br /&gt;
&lt;br /&gt;
'''atom&amp;lt;space&amp;gt; hello underscore flask dot py'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and press '''Enter.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now let us understand what the code does, line by line.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
“from flask import Flask”&lt;br /&gt;
|| The first line is '''from flask import Flask.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It simply says '''import''' '''Flask''' '''module''' from '''flask''' folder. &lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
Point to the left pane of Atom.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Collapse flask_venv-&amp;gt;lib-&amp;gt;python3.5-&amp;gt;site-packages&lt;br /&gt;
&lt;br /&gt;
And hover over flask foder.&lt;br /&gt;
|| Look at the '''directory structure''' at the left pane of the '''Atom text editor''' window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observe that there is no '''flask''' folder in the '''project'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So how does the '''compiler''' find and import the '''Flask module'''?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Python''' is set to look for '''modules''' in the '''site-packages'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Highlight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
app = Flask(__name__)&lt;br /&gt;
|| In the second line, we have created an '''object''' for the '''flask class.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This '''object''' of the '''Flask class''' is our '''WSGI application.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''WSGI''' stands for '''Web Server Gateway Interface.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will come to what '''WSGI''' is later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This takes an '''argument double underscore name double underscore. '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This '''argument''' basically refers to the name of the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case it is “'''hello_flask'''”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Flask''' uses this '''argument''' to determine the '''root path''' of the '''application'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
@app.route('/')&lt;br /&gt;
|| In the next line, the''' route function''' of the '''Flask class''' is a '''decorator.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It tells the '''application''', which '''URL''' should call the associated '''function'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In this case, '''root slash''' is the '''URL'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It refers to '''home''' or top '''domain'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
@app.route('/')&lt;br /&gt;
|| '''Decorators''' are a standard feature of the '''Python''' language.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
They can modify the behavior of a '''function''' in different ways. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, it is used to associate a '''function''' with a '''URL'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To know more about '''decorators''' you may refer to the '''Python Spoken Tutorial series'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 5: Routes (img 1)'''&lt;br /&gt;
|| Let us understand the concept of '''routes''' in detail now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Look at this diagram.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This shows a simplified '''client''' and '''server''' diagram.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 6: Routes (img 2)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|| The client sends a '''request''' to the '''web server'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case, the '''web browser''' is the '''client'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 7: Routes (img 3)'''&lt;br /&gt;
|| Then the '''web server''' has to process the '''request''' and generate a '''response'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And the '''Flask application '''instance does this job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''web server''' sends the '''request''' to the '''Flask application''' instance.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 8: Routes (img 4)'''&lt;br /&gt;
|| On receiving the '''request''' the '''app''' matches it with the available '''route patterns'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 9: Routes '''&lt;br /&gt;
|| &lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;Thus the '''application''' instance knows which '''function''' to execute for which '''URL'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;This happens because it keeps a mapping of the '''URLs''' to '''functions'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;Here we need the concept of '''routes'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 9: Routes '''&lt;br /&gt;
|| &lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;The association between a '''URL''' and the '''function''' that handles it, is called a '''route'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;The '''Flask app''' executes the associated '''function''' and returns a '''response'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Slide 9: Routes '''&lt;br /&gt;
|| &lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Routes''' can be either '''static''' or '''dynamic'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;In the present case, we have a static '''route'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will discuss '''dynamic routes''' in a moment.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
def hello_world():&lt;br /&gt;
|| Let’s come back to our '''“hello world” app.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the next line, we define the associated '''function''' for this '''route'''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This '''function''' gets executed when the '''root URL''' is hit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case the '''root''' '''URL''' is [http://127.0.0.1:5000/ http://127.0.0.1:5000]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here, we have named the '''function''' as “'''hello_world'''”.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, you may choose any other name of your choice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This '''function''' associated with a '''route '''is called ‘'''view function'''’.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
return 'Hello, World!'&lt;br /&gt;
|| The next line says '''return 'Hello, World!''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So this '''view function''' simply returns a '''string “Hello World”. '''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
&lt;br /&gt;
(Tab) app.run()&lt;br /&gt;
|| Now let us add a few more lines of code at the end.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Line 9 and 10.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Text Editor]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
&lt;br /&gt;
(Tab) app.run()&lt;br /&gt;
|| This is a customary common practice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This ensures that '''server '''is launched only if the '''script''' runs directly from the '''terminal'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise '''app dot run''' is skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It may happen that a '''script''' is being called from another '''script'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case the imported '''script''' should not start a new '''server'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hence we follow this practice.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| '''Ctrl+S'''&lt;br /&gt;
|| Let us save the file by pressing '''Ctrl''' and '''S''' keys.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then close the editor window.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
Type &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ export FLASK_APP=hello_flask.py&lt;br /&gt;
|| Now back in the '''terminal''' and run the''' hello world app.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type '''export &amp;lt;space&amp;gt; FLASK_APP &amp;lt;equal to &amp;gt; hello underscore flask dot py'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
Type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ python3 -m flask run&lt;br /&gt;
|| Now type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''python3 &amp;lt;space&amp;gt; hyphen m &amp;lt;space&amp;gt; flask &amp;lt;space&amp;gt; run'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And press '''Enter'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can see a message '''“Running on [http://127.0.0.1:5000/ http://127.0.0.1:5000/]”'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here, '''127.0.0.1''' is the '''IP''' '''address''' for the '''localhost'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Flask app''' is running in the '''local host''' on '''port 5000.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Firefox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type &lt;br /&gt;
&lt;br /&gt;
[http://127.0.0.1:5000/ http://127.0.0.1:5000/]&lt;br /&gt;
&lt;br /&gt;
And press Enter.&lt;br /&gt;
|| Now, open any '''web browser. '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the '''address bar''', type [http://127.0.0.1:5000/ http://127.0.0.1:5000/] and press '''Enter'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Firefox]&lt;br /&gt;
&lt;br /&gt;
Highlight ‘Hello, World!’&lt;br /&gt;
|| We can see the message ‘'''Hello, World!'''’ written in the browser window. &lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| &lt;br /&gt;
|| Switch back to the '''terminal'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stop the '''server''' by pressing '''Ctrl''' and '''C '''keys together.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
atom hello_flask.py&lt;br /&gt;
|| Now we will write code for a '''dynamic''' '''route''' and also define a '''view function''' called '''hello_user'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open the '''hello_flask.py''' in any '''text editor.'''&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@app.route('/user/&amp;lt;username&amp;gt;')&lt;br /&gt;
&lt;br /&gt;
def hello_user(username):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;(Tab) return '&amp;lt;h1&amp;gt;Hello, %s!&amp;lt;/h1&amp;gt;' % username &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| Before the''' if condition''', type the code as shown here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Highlight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@app.route('/user/&amp;lt;username&amp;gt;')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|| This '''route''' has a '''URL''', '''home/user/&amp;lt;username&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where '''home''' is the '''root''' '''domain''' '''URL''' of the '''server'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In our case the '''root''' '''URL''' is [http://127.0.0.1:5000/ http://127.0.0.1:5000]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
whereas, '''username''' is a '''variable'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will use this '''variable '''in the '''view''' '''function''' to change the content in the browser.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Highlight&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def hello_user(username):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
(Tab) return '&amp;lt;h1&amp;gt;Hello, %s!&amp;lt;/h1&amp;gt;' % username &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|| This '''function '''will simply return a string '''‘Hello’''' '''username'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the output in the '''browser '''will vary as per the '''username''' in the '''URL'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''h1''' is the level one '''heading tag '''of '''HTML'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| &lt;br /&gt;
|| Let us save the file by pressing '''Ctrl''' and '''S''' keys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Close the editor window.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
$ python3 -m flask run [Enter]&lt;br /&gt;
|| Run the '''app''' by executing the following command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Firefox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type &lt;br /&gt;
&lt;br /&gt;
http://127.0.0.1:5000/user/Sid &lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
|| Switch to the '''web browser'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the''' address bar''', type [http://127.0.0.1:5000/ http://127.0.0.1:5000/]user/Sid &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
and press '''Enter'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Firefox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type &lt;br /&gt;
&lt;br /&gt;
http://127.0.0.1:5000/user/Tom&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
|| We got the output as '''“Hello Sid!”.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now let’s try '''tom''' instead of '''sid'''&lt;br /&gt;
&lt;br /&gt;
In the '''address bar''', replace '''sid''' with '''tom.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Press '''Enter'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The output has changed to '''‘Hello Tom!’ '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have a dynamic '''URL''' in play here.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Slide 10: Example URL &lt;br /&gt;
|| This is what you may have observed in '''facebook''' as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Facebook''' individual '''users''' have a '''URL''' of the type:&lt;br /&gt;
&lt;br /&gt;
[http://www.facebook.com/profile_id www.facebook.com/profile_id]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here '''profile_id''' refers to the unique '''ID''' of a '''facebook user.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depending on the unique '''ID, facebook server''' fetches the individual '''profile pages'''.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Firefox]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type &lt;br /&gt;
&lt;br /&gt;
http://127.0.0.1:5000/posts&lt;br /&gt;
&lt;br /&gt;
[Enter]&lt;br /&gt;
|| Let’s try a '''URL''' for which we did not define a '''route'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Switch to the '''browser '''window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Replace '''/user/tom''' with '''posts '''and press '''Enter.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observe that we got '''Not found''' message.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| [Terminal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight 404.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Highlight 200’s.&lt;br /&gt;
|| Switch to the '''terminal'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Observe that, the '''server''' has returned a '''404 response code.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This '''error code''' indicates that the web page requested for, does not exist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Whereas most previous '''response codes''' were '''200'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We will discuss in detail these '''HTTP responses''' in the upcoming tutorials.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | Press Ctrl+c simultaneously &lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | To stop the '''server''', press '''Ctrl''' and '''C''' keys simultaneously.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | [Terminal]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type deactivate and press Enter&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | We will deactivate the '''Virtual Environment.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type '''deactivate''' and press '''Enter'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | This brings us to the end of this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let us summarise&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Slide 10: Summary&lt;br /&gt;
|| In this tutorial, we learnt about&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;The working of our first '''Flask application.'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;The concepts of '''routes '''and the view '''functions.'''&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;Running a '''Flask app '''in a '''Web''' '''browser'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
* &amp;lt;div style=&amp;quot;margin-left:1.27cm;margin-right:0cm;&amp;quot;&amp;gt;'''Dynamic content''' served by dynamic '''URLs'''.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.079cm;padding-right:0.191cm;&amp;quot; | &amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Slide: About Spoken Tutorial project&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.079cm;padding-right:0.191cm;&amp;quot; | &amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;The video at the following link summarises the Spoken Tutorial project.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please download and watch it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | Slide:&lt;br /&gt;
&lt;br /&gt;
Spoken Tutorial workshops&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | &amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;The&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;'''Spoken Tutorial Project'''&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;&amp;amp;nbsp;team &amp;lt;/span&amp;gt;conducts workshops and gives certificates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details, please write to us.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| Slide 13:&lt;br /&gt;
&lt;br /&gt;
Forum for specific questions:&lt;br /&gt;
|| Please post your timed queries in this forum.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | Slide: Acknowledgement&lt;br /&gt;
| style=&amp;quot;background-color:#ffffff;border-top:1pt solid #000001;border-bottom:0.5pt solid #000001;border-left:0.5pt solid #000001;border-right:0.5pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.095cm;padding-right:0.191cm;&amp;quot; | &amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Spoken Tutorial Project is funded by NMEICT, MHRD, Government of India.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information on this mission is available at this link.&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffff;border:1pt solid #000001;padding:0.176cm;&amp;quot;&lt;br /&gt;
|| &lt;br /&gt;
|| This is Siddhartha Sarkar signing off. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks for watching.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SiddharthaSarkar</name></author>	</entry>

	</feed>