{"id":280,"date":"2020-12-22T16:05:58","date_gmt":"2020-12-22T16:05:58","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=280"},"modified":"2020-12-28T01:43:39","modified_gmt":"2020-12-28T01:43:39","slug":"dunaamilised-veebiaadressid","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/dunaamilised-veebiaadressid\/","title":{"raw":"D\u00fcnaamilised veebiaadressid","rendered":"D\u00fcnaamilised veebiaadressid"},"content":{"raw":"J\u00e4rgnevalt vaatame, kuidas toimivad d\u00fcnaamilised veebiaadressid. Saame aadressis n\u00e4idata andmet\u00fc\u00fcbi ja id ning ning sama id-d kasutada ka lehe sisus. J\u00e4rgneva n\u00e4ite puhul kuvatakse aadressi \/avaleht\/1 puhul veebilehel teksti <em>Tere, 1. k\u00fclaline<\/em>; \/avaleht\/2 aadressil teksti <em>Tere, 2. k\u00fclaline<\/em>. P\u00e4rast Thonnys k\u00e4ivitamist saame vaadata, kas aadressil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/1\">http:\/\/127.0.0.1:5000\/avaleht\/1<\/a> on sisu <em>Tere, 1. k\u00fclaline<\/em> ja aadresssil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/2\">http:\/\/127.0.0.1:5000\/avaleht\/2<\/a> sisu <em>Tere, 2. k\u00fclaline<\/em>.\r\n\r\nKui paneme selle faili \u00fcles PythonAnywhere keskkonda, siis aadressil kujul <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/1\">https:\/\/kasutaja.pythonanywhere.com\/avaleht\/1<\/a> kuvatakse <em>Tere, 1. k\u00fclaline<\/em> ja aadressil kujul <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2\">https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2<\/a> <em>Tere, 2. k\u00fclaline<\/em>. See, millisel aadressil sisu on, s\u00f5ltub sellest, mis me failis m\u00e4\u00e4rame. Kuna failis oli teekond <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;int:id&gt;')<\/code>, siis ongi meil aadressi <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2\">https:\/\/kasutaja.pythonanywhere.com<\/a> j\u00e4rel veel s\u00f5na <em>avaleht<\/em> ja arv.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;int:id&gt;') \r\ndef tere(id):\r\n\u00a0 \u00a0 return 'Tere, ' + str(id) + '. k\u00fclaline!'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\r\nKui tahame aadressis kuvada nime, siis saame teha seda nii <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;string:nimi&gt;<\/code>. Muutujat <em>nimi<\/em> saame kasutada funktsiooni argumendina ja tagastatavas tekstis. N\u00e4iteks saame seda teha j\u00e4rgnevalt.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;string:nimi&gt;')\r\ndef tere(nimi):\r\n\u00a0 \u00a0 return 'Tere, ' + nimi + '!'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\r\nP\u00e4rast Thonnys k\u00e4ivitamist saame vaadata, kas n\u00e4iteks aadressil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/Elle\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/avaleht\/Elle<\/a> kuvatakse tekst <em>Tere, Elle!<\/em> Samuti proovige aadressi panna m\u00f5ni teine nimi. Aadressi m\u00e4\u00e4rasime reaga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;string:nimi&gt;')<\/code>\r\n\r\nVajadusel saame funktsiooni defineerida mitme argumendiga.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;string:nimi&gt;\/postitused\/&lt;int:id&gt;') \r\ndef tere(nimi, id):\r\n\u00a0 \u00a0 return 'Tere, ' + nimi + ', sinu id on ' + str(id) + '.'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\r\nKui tahame tulemust vaadata, k\u00e4ivitame Thonnys programmi ja taas on aadressi alguseks <a href=\"http:\/\/127.0.0.1:5000\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/<\/a> ja \u00fclej\u00e4\u00e4nu tuleneb sellest, kuidas aadressi m\u00e4\u00e4rasime. Selle n\u00e4ite puhul defineerisime aadressi reaga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;string:nimi&gt;\/postitused\/&lt;int:id&gt;')<\/code>. Seega v\u00f5ime tulemust kontrollida n\u00e4iteks aadressilt <a href=\"http:\/\/127.0.0.1:5000\/home\/Elle\/postitused\/2\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/home\/Elle\/postitused\/2<\/a>.","rendered":"<p>J\u00e4rgnevalt vaatame, kuidas toimivad d\u00fcnaamilised veebiaadressid. Saame aadressis n\u00e4idata andmet\u00fc\u00fcbi ja id ning ning sama id-d kasutada ka lehe sisus. J\u00e4rgneva n\u00e4ite puhul kuvatakse aadressi \/avaleht\/1 puhul veebilehel teksti <em>Tere, 1. k\u00fclaline<\/em>; \/avaleht\/2 aadressil teksti <em>Tere, 2. k\u00fclaline<\/em>. P\u00e4rast Thonnys k\u00e4ivitamist saame vaadata, kas aadressil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/1\">http:\/\/127.0.0.1:5000\/avaleht\/1<\/a> on sisu <em>Tere, 1. k\u00fclaline<\/em> ja aadresssil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/2\">http:\/\/127.0.0.1:5000\/avaleht\/2<\/a> sisu <em>Tere, 2. k\u00fclaline<\/em>.<\/p>\n<p>Kui paneme selle faili \u00fcles PythonAnywhere keskkonda, siis aadressil kujul <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/1\">https:\/\/kasutaja.pythonanywhere.com\/avaleht\/1<\/a> kuvatakse <em>Tere, 1. k\u00fclaline<\/em> ja aadressil kujul <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2\">https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2<\/a> <em>Tere, 2. k\u00fclaline<\/em>. See, millisel aadressil sisu on, s\u00f5ltub sellest, mis me failis m\u00e4\u00e4rame. Kuna failis oli teekond <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;int:id&gt;')<\/code>, siis ongi meil aadressi <a href=\"https:\/\/kasutaja.pythonanywhere.com\/avaleht\/2\">https:\/\/kasutaja.pythonanywhere.com<\/a> j\u00e4rel veel s\u00f5na <em>avaleht<\/em> ja arv.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;int:id&gt;') \r\ndef tere(id):\r\n\u00a0 \u00a0 return 'Tere, ' + str(id) + '. k\u00fclaline!'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\n<p>Kui tahame aadressis kuvada nime, siis saame teha seda nii <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">&lt;string:nimi&gt;<\/code>. Muutujat <em>nimi<\/em> saame kasutada funktsiooni argumendina ja tagastatavas tekstis. N\u00e4iteks saame seda teha j\u00e4rgnevalt.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;string:nimi&gt;')\r\ndef tere(nimi):\r\n\u00a0 \u00a0 return 'Tere, ' + nimi + '!'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\n<p>P\u00e4rast Thonnys k\u00e4ivitamist saame vaadata, kas n\u00e4iteks aadressil <a href=\"http:\/\/127.0.0.1:5000\/avaleht\/Elle\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/avaleht\/Elle<\/a> kuvatakse tekst <em>Tere, Elle!<\/em> Samuti proovige aadressi panna m\u00f5ni teine nimi. Aadressi m\u00e4\u00e4rasime reaga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;string:nimi&gt;')<\/code><\/p>\n<p>Vajadusel saame funktsiooni defineerida mitme argumendiga.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">from flask import Flask\r\n\r\napp = Flask(__name__)\r\n\r\n@app.route('\/avaleht\/&lt;string:nimi&gt;\/postitused\/&lt;int:id&gt;') \r\ndef tere(nimi, id):\r\n\u00a0 \u00a0 return 'Tere, ' + nimi + ', sinu id on ' + str(id) + '.'\r\n\r\nif __name__ == '__main__':\r\n\u00a0 \u00a0 app.run()\r\n\r\n<\/pre>\n<p>Kui tahame tulemust vaadata, k\u00e4ivitame Thonnys programmi ja taas on aadressi alguseks <a href=\"http:\/\/127.0.0.1:5000\/\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/<\/a> ja \u00fclej\u00e4\u00e4nu tuleneb sellest, kuidas aadressi m\u00e4\u00e4rasime. Selle n\u00e4ite puhul defineerisime aadressi reaga <code class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">@app.route('\/avaleht\/&lt;string:nimi&gt;\/postitused\/&lt;int:id&gt;')<\/code>. Seega v\u00f5ime tulemust kontrollida n\u00e4iteks aadressilt <a href=\"http:\/\/127.0.0.1:5000\/home\/Elle\/postitused\/2\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:5000\/home\/Elle\/postitused\/2<\/a>.<\/p>\n","protected":false},"author":29,"menu_order":3,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-280","chapter","type-chapter","status-publish","hentry"],"part":100,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/29"}],"version-history":[{"count":9,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/280\/revisions"}],"predecessor-version":[{"id":444,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/280\/revisions\/444"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/100"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/280\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=280"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=280"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=280"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}