Python Web Service From Idea to Production

Build Python web service and publish it to the world!

Enroll 2022-03-14 w11 Mon 08:00. Last instance was fully booked on the day enrollment started.

Previous feedback was excellent 4.9 out of 5. Intensive online course 2022 w21-w22.

You can read previous feedback in comments.

Moodle

Make a web app that

  • Serves clients on Linux, Windows, Mac, Android, iPhone
  • Logs how users use your app
  • Let's many users read and edit data at the same time
  • Can be used without installing anything
  • Always uses the latest version of your app

Remote, in Finnish, every day Mon-Fri 9-16. Starts on 2022-05-23 w21 Mon 09:00, ends on w22 Wednesday. Update: Except 2022-05-26 w21 Thu, that's free.

Many websites are written in Python, for example Youtube, Facebook, Instagram, National Geographic, Disqus, Pintrest and Oda.

Koska kurssi on suomeksi, loput tästä sivusta on suomeksi.

Ilmoittautuminen alkoi 2022-03-14 w11 Mon 08:00, ja 30% paikoista varattiin ensimmäisen 10 minutin aikana. Kurssi on "Python weppipalvelu - ideasta tuotantoon" ja koodi on ICT8TN034-3002. Update: täyteen varattu, jono aloitettu.

Katso lähtötaso ja ilmoittaudu MyNetissa.

Kuuden rivin weppipalvelu

Tule kurssille, niin opit ymmärtämään weppikoodausta. (Nörteille tiedoksi, että nyt kehikkona on Django)

Alustava aikataulu

Rakenna weppipalvelu Pythonilla ja asenna se julkiselle palvelimelle.

Joka arkipäivä 9-16*, videokonfferenssina. *Paitsi maanantaina 9-13.

Päivittäiset aiheet saattavat päivittyä kurssin kuluessa.

päiväaihe
w21
2022-05-23 w21 maHei maailma! Hei HTML, Python ja Django. Päättyy poikkeuksellisesti kello 13 mennessä.
2022-05-24 w21 tiAdmin, automaattinen hallintapaneli.
2022-05-25 w21 keMuotit, templates
2022-05-26 w21 to(Helatorstai, opetukseton päivä)
2022-05-27 w21 peTietokanta, models.py. Miniprojektin tehtävänanto
w22
2022-05-30 w22 maTuotantoon, pilven vuokraaminen ja sovelluksen julkaiseminen Internetiin
2022-05-31 w22 tiMiniprojektin rakentamista
2022-06-01 w22 keDemopäivä, omien projektien esittely

Kurssi päättyy kokonaan demopäivänä, w22 keskiviikkona. Sen jälkeen ei voi eikä tarvitse palauttaa mitään.

Luettavaa

Karvinen 2022: Django 4 Instant Customer Database Tutorial

Mozilla Developer Network contributors 2022: Django Web Framework (Python): Django Tutorial Part 3: Using models

Django contributors 2022: Django 3.2 documenation: Model field reference

Karvinen 2006: Raportin kirjoittaminen

Refresh Oxford 2022: Classy Class-Based Views (CreateView, ListView, DetailView, UpdateView, DeleteView)

Django contributors 2022: Django 3.2 documenation: Generic display views (DetailView, ListView)

Django contributors 2022: Django 3.2 documenation: Generic editing views (CreateView, UpdateView, DeleteView)

Django contributors 2022: Django 3.2 documenation: Templates

Django contributors 2022: Django 3.2 documenation: Built-in template tags and filters

Django contributors 2022: Django 3.2 documenation: Making queries: Retrieving objects

Karvinen 2017: First Steps on a New Virtual Private Server – an Example on DigitalOcean and Ubuntu 16.04 LTS

  • I recommend Debian 11-bullseye 64-bit for servers
  • Install the firewall 'sudo apt-get update', 'sudo apt-get install ufw'
  • Add your user to "sudo" group. The other groups admin, amd... don't probablly exist on all distros

Karvinen 2022: Deploy Django 4 - Production Install

  • To use Django 3.2, put into "requirements.txt": "django==3.2"

Karvinen 2016: Install PostgreSQL on Ubuntu – New user and database in 3 commands

Kajaluoto 2022: Linux palvelimet h4 raportti

  • Vuokraa kone pilvestä
  • Vuokraa nimi ja laita se osoittamaan koneeseesi

Läksyt

Läksyt ovat alustavia. Ne ovat virallisia vasta, kun ne on annettu tunnilla ja saattavat muuttua ennen sitä.

pw1 Hello DJ A

a) Asenna Django-kehitysympäristö.

b) (Update: tämä kohta muutettiin vapaaehtoiseksi) Lisää omia kenttiä malliin.

c) Tee lisää käyttäjiä, jotka saavat kirjautua Djangon adminiin

d) Palauta työ Laksuun. Arvioi kahden muun opiskelijan palautus Laksussa. (tätä alakohtaa ei tarvitse raportoida)

e) Vapaaehtoinen: tee useamman taulun tietokanta (models.Foreignkey)

f) Vapaaehtoinen: kokeile asentaa Django kehitysympäristö, oma esimerkkiappi ja admin siihen 4-8 kertaa. Viimeiset kerrat ovat yleensä aika helppoja ja nopeita.

Vinkkejä:

  • Palautus samana päivänä kello 20:00 mennessa Laksuun
  • Aloita lukemalla Karvinen 2022: Django 4 Instant Customer Database Tutorial ja tarvittaessa Karvinen 2006: Raportin kirjoittaminen
  • Testaamatta == tekemättä.
    • Muista aina osoittaa testillä, että se toimii, mitä asensit.
    • Esimerkiksi omien kenttien lisäämisen malliin voit osoittaa muokkaamalla tietueita adminissa.
  • Viittaa kaikkiin käyttämiisi lähteisiin
    • Kurssiin
    • Tehtävänantoihin
    • Djangon dokumentaatioon
    • Tutoriaaleihin
    • Toisten tehtäviin
    • man-sivuihin
    • jne.
  • Jos on vaikeita kohtia, tee ja raportoi kaikki mitä osaat. Ja katsotaan huomenna yhdessä loput.
  • Kuuden päivän päästä sinulla on oma weppiohjelma julkaistuna
  • Nähdään 09:00

pw2 ListView

a) Tee alusta lähtien uusi Django-projekti. Tee siihen sivu, joka listaa tietueita tietokannasta ilman kirjautumista. Valitse jokin muu aihe kuin aiemman esimerkin CRM. Aivan simppeli esimerkkiprojekti riittää, mutta valitse sille jokin esimerkkiaihe.

d) Palauta työ Laksuun. Arvioi kahden muun opiskelijan palautus Laksussa. (tätä alakohtaa ei tarvitse raportoida) c) Vapaaehtoinen: kokeile tehdä pari samantapaista projektia. Osaatko tehdä ulkomuistista? Kirjaa kohdat, jotka piti katsoa materiaalista, niin näät, mitä vielä pitää kerrata.

Vinkkejä

  • Tässä pw2-tehtävässä voit esittää kehitysympäristön asennuksen hyvin tiiviisti, vaikkapa vain luettelemalla annetut komennot, ja laittaa viitteen vastaukseesi edellisessä kohdassa.
  • Helpoin tapa listata tietueet on ListView (class based generic views)
  • Jos joltain vielä puuttuu pw1, voit palauttaa sen nyt Laksuun. Anna samalla palautetta kahden kaverisi töistä.
  • Jos jäät jumiin, ratko kaikki mitä osaat, katsotaan yhdessä huomenna loput
  • Olemme edenneet huimaa vauhtia, hyvää työtä
  • 5 päivän päästä sinulla on weppiohjelma julkaistuna.
  • Nähdään 09:00

pw3 CRUD

a) Vapaaehtoinen: CRUD. Tee alusta lähtien Django-ohjelma, jossa voit luoda (C), lukea (R), muokata (U) ja poistaa (D) tietueita. Keksi sille joku aihe, vaikka kalavale / tall tales. Tässä ohjelmassa ei tarvitse autentikoida käyttäjiä. Tästä tehtävästä ei tarvitse tehdä yksityiskohtaista raporttia, palauta ohjelman lähdekoodi, README.md ja ruutukaappaus.

pw4 MyBooks

a) Oma kirjatietokanta. Tee alusta lähtien kirjatietokanta Djangolla. Siinä pitää olla ylläpitoliittymä salasanan takana. Ja admin-panelin ulkopuolella liittymä, jossa voi luoda, lukea, muokata ja poistaa kirjoja (CRUD). Tässä a-kohdassa admin-panelin ulkopuolella ei tarvitse olla kirjautumista. Tästä tehtävästä ei tarvitse tehdä yksityiskohtaista raporttia, palauta ohjelman lähdekoodi, README.md ja ruutukaappaus. Palautus heti kun on valmista, viimeistään su 20:00.

b) Vapaaehtoinen, vaikeahko: laita muokkaussivut (CUD) salasanan taakse. (LoginRequiredMixin)

c) Vapaaehtoinen, vaikeampi: laita käyttäjille mahdollisuus rekiströityä. (CreateView, User, UserForm)

Vinkkejä

  • Maanantaina 09:00 viedään tuotantoon.
  • Luottokortti tai debit-luottokortti mukaan.
  • Jos haluat käyttää GitHub Education ilmaispaketin, käy hakemassa se etukäteen.
    • Ensin GitHub-tunnus haaga-helian sähköpostiosoitteella, joka on vahvistettu (klikattu vahvistuslinkkiä)
    • Vasta sitten GitHub Education paketin haku
    • Ilmaistenkin pilvikrediittien käyttöön tarvinnee luottokortin tai "debit-luottokortin"
  • Omaa projektia kannattaa jo miettiä, ja saahan sitä jo aloittaakin

pw5 kone pilvestä

a) Vuokraa kone pilvestä. Sellainen kokonainen Linux-kone, virtual private server. Ota siihen ssh-yhteys.

b) Laita vuokrakoneellesi weppipalvelin ja korvaa testisivu. Kokeile esim. kännykällä, että kone näkyy Internetiin.

c) Vuokraa tai lainaa domain nimi. Laita se osoittamaan omaan koneeseesi.

d) Tee Djangon tuotantoasennus niin pitkälle kuin osaat. Tämä tehtävä lienee haastavampi niille, jotka eivät ennestään osaa Linuxia ja palvelimia. Jos on haastavaa, tee siihen asti, että pääset johonkin konkreettiseen ongelmaan ja voimme katsoa huomenna lisää.

e) Palauta Laksuun. Kirjoita palaute kahdesta kaverisi kotitehtävästä.

f) Vapaaehtoinen: automatisoi päivitysten siirtäminen kehityspalvelimelta tuotantoon. Eli yhdellä komennolla tuotantopalvelimen koodien päivitys, tietokantamigraatiot ja uusi versio käyttöön.

Vinkkejä:

  • Koneen vuokraaminen ja nimi
  • Djangon tuotantoasennus
  • Tee niin pitkälle kuin osaat, katsotaan huomenna yhdessä loput.
    • Tehtävä on haastva, jos olet Linux- ja palvelinaloittelija. Silloin tosin hyöty saavutetusta uudesta taidostakin on huima.
  • Kannattaa jo miettiä miniprojektin aihetta

pw6 Miniprojekti

a) Palauta URL projektiisi. Voit palauttaa linkin demoon tai lähdekoodin lataussivuun, nehän linkittävät toisiinsa joka tapauksessa.

Vinkit

  • Tee ensin pieni valmis projekti, ja talleta se toimiva versio.
  • Vie pikku projektisi tuotantoon
  • Voit tehdä hienoja juttuja, mutta tee aina toimivia versioita
  • Palautus Laksuun aamulla 09:00 mennessä
  • Ja ekalla tunnilla voidaan vielä katsoa yhdesssä pikkuhiomisia
  • Katso myös vinkit projektista

Esitysjärjestys

  1. Eetu
  2. Josefina
  3. Jesse
  4. Jyri
  5. Pauli
  6. Mikko
  7. Valtteri
  8. Antti
  9. Kalle
  10. Lauri
  11. Sanna

Anna palautetta

Palaute on todella tärkeä tapa kehittää kurssia – kiitos kommenteista jo etukäteen.

Palaute kahteen kanavaan, tämän sivun kommentiksi ja MyNettiin.

1) Vapaamuotoinen palaute sivulle kommentiksi

Vapaamuotoinen palaute kommenttina tämän kurssisivun perään

Vapaamuotoiseen palautteeseen saa kirjoittaa mitä vain, eikä kysymyksiä tarvitse toistaa. Mutta tässä vinkiksi:

  • Opitko jotakin – eli osaatko nyt sellaista, mitä et osannut ennen kurssia?
  • Teitkö jotain ensimmäistä kertaa? Koodasit tietokantaohjelman, vuokrasit pilvipalvelimen, laitoit oman sovelluksen julkiseen Internetiin, sääsit nimipalvelun...
  • Oliko opittu hyödyllistä? Luuletko, että sille on käyttöä esim. tulevaisuudessa töissä tai kotona?
  • Oliko sinulle hyötyä saamastasi palautteesta ja ohjauksesta
  • Miten voisin parantaa kurssia?
  • Viihdyitkö kurssilla?
  • Mitä pidit opiskelijoiden esityksistä? Esittämisestä? Kommenteista?
  • Suosittelisitko kurssia? Kenelle kurssi sopisi? Koulutoverille tai kollegalle?

2) Numeerinen palaute MyNettiin

Numeerinen palaute Haaga-Helian MyNettiin palautejärjestelmään

Numeerisella palautteella mm. verrataan tätä kurssia Haaga-Helian muihin kursseihin.

Numeeriset: Asteikko 1-välttävä (huonoin) ... 5-kiitettävä (paras)

  • Oma aktiivisuutesi opiskelussa 1-5
  • Osaamistavoitteiden saavuttaminen 1-5
  • Työskentelytavat tukivat oppimista 1-5
  • Opiskeluympäristö tuki oppimista 1-5
  • Hyödyllisyys työelämään 1-5

Avoimet kysymykset (näihin voi myös kopioida samat vastaukset jotka kirjoitit aiemmin)

  • Mitkä asiat edistivät oppimistasi?
  • Miten kehittäisit toteutusta / toteutuskokonaisuutta, jotta osaamistavoitteet saavutettaisiin paremmin?

Kokonaisarviosi toteutuksesta / toteutuskokonaisuudesta 1-5

Suosittelisitko 1-10

Kiitos palautteesta ja jännittävästä kurssista!

Projektista

Ensin valmista, sitten hienostelua. Tee ensin yksinkertainen ja toimiva projekti. Kun se toimii, laita toimiva versio talteen (ja julkaise, jos jo osaat). Ja vasta sen jälkeen hienostelua, bonuksia ja kurottelumaaleja.

Vaatimukset

  • Python Djangolla, käyttää tietokantaa
  • Tarkoitus - business purpose, what's in it for me... Sellainen tarkoitus, jonka on olemassa ilman tekniikoita.
  • Pitää pystyä käyttämään ilman opastusta
  • Julkisella palvelimella oikeassa Internetissä (opetetaan maanantaina)

Projektin lataus/About Etusivulla, taitoksen yläpuolella

  • Tarkoitus. Yhden lauseen kuvaus (tarkoitus, business purpose, what's in it for me)
  • Ruutukaappaus
  • Demon linkki
  • Lisenssi (esim. vapaista lisensseistä suosittelen "GNU General Public License 2". Voit lisensoida haluamallasi tavalla.)
  • Kuinka valmis tämä on (alpha, beta, ... ja kuvaus ihmisten kielellä)
  • Download-nappi, lähdekoodi
  • Miten asennan / otan tämän käyttöön
  • Viittaus / linkki kurssiin olisi kiva

Vinkkejä

  • Tee ja julkaise toimiva ydinjuttu ensin. Sellainen, joka täyttää nuo vaatimukset yllä.
  • Kun perusjuttu toimii, hauskoja voisivat olla kirjautuminen (LoginRequiredMixin) ja vain omat tietueet (get_queryset()).
  • Muitakin tekniikoita saa käyttää, kunhan ydinasia on tehty Python Djangolla. Esimerkiksi tyylisivuja tai mitä vain tekniikoita. Jos aika riittää ja sopivaa osaamista on kurssin ulkopuolelta, oman HTTP-rajapinnan kautta voi helposti yhdistää muita ohjelmia ja sulautettuja laitteita.
  • Lisensseistä GPL (GNU General Public License) on suositus. Voit päättää lisenssin itse. Jotkut käyttävät myös MIT-lisenssiä.
  • Tietysti kannattaa julkaista, siitä on huomattava hyöty projekteja ja töitä hakiessa. Jos et uskalla tai muuten halua julkaista, on mahdollista laittaa salasanan taakse ja jakaa salasana kurssilaisten kanssa, mutta suosittelen julkaisua.
  • Jos aikaa ja energiaa riittää, hienoista lisäjutuista saa hienoja lisäpisteitä. Mutta toimiva ydintuote kannattaa julkaista ensin. Hauskoja ylimääräisiä bonareita toimivan julkaisun jälkeen ovat muutama oikea käyttäjä (ja palautteen keruu), jokin lisätekniikka tai integraatio (PayPal/Stripte tms maksu; MailGun, SendGrid tms sähköpostin lähetys) tai uusi Djangon ominaisuus.
  • Tästä projektista ei tarvitse kirjoittaa vaiheittaista raporttia, palautettavat asiat ovat 1) toimiva demo wepissä 2) lähdekoodin lataussivu.

Osaamistavoiteet

Rakenna weppipalvelu Pythonilla ja asenna se julkiselle palvelimelle.

Opit tekniikan, joka

  • palvelee asiakkaita Linuxilla, Macilla, Windowsilla, iPhonella, Androidilla - millä vain selaimella
  • kerää itsestään tietoa siitä, miten palveluasi käytetään
  • antaa monien käyttäjien muokata tietoja yhtä aikaa (aika tavallinen vaatimus yritysten ohjelmissa)
  • toimii käyttäjillä asentamatta mitään
  • käyttää automaattisesti uusinta versiota ohjelmastasi

Opintojakson suoritettuaan opiskelija

  • Osaa ohjelmoida www-palvelimella ajettavan ohjelman, jota voi käyttää millä vain selaimella
  • Osaa tallentaa tiedot tietokantaan niin, että useampi käyttäjä voi katsella ja muokata tietoja samaan aikaan
  • Osaa asentaa tarvittavat palvelimet Linuxille
  • Osaa vuokrata julkaisuun tarvittavat pilvipalvelut
  • Ymmärtää palvelinpään wwww-ohjelmoinnin edut ja toimintaperiaatteen

Intensiivikurssi: Kurssi edellyttää 100% etäläsnäoloa koko kurssin ajan.

Lähtötaso ja sidonnaisuudet muihin opintojaksoihin

Kurssille tullessa pitää osata

  • Linuxin alkeet (Linuxin asennus, Linuxin käyttö komentokehotteesta, palvelinten eli demonien asentaminen)
  • Ohjelmoinnin alkeet millä vain kielellä: muuttuja, funktio, if-else, silmukka, luokka, olio...
  • Puhua suomea ja lukea englantia

Tarvittavat taidot on voinut hankkia esimerkiksi kursseilla "Linux palvelimena" ja millä tahansa ohjelmoinnin alkeiskurssilla. Esitiedot tarkistetaan tarvittaessa alkutestillä tai -haastattelulla. Kurssille tullessa ei tarvitse osata Pythonia.

Kurssi toteutetaan 100% etäopetuksena. Osallistumiseen tarvitaan Linux, Internet-yhteys, videokamera, kuulokkeet ja mikrofoni. Palvelimen vuokraamiseen pilvestä tarvitset noin viisi euroa (tai voit käyttää ilmaisia Github Education -palveluita, jos sinulla on niitä käyttämättöminä). Kurssille tullessa opiskelijalla olisi hyvä olla Linux asennettuna itselle. Myös virtuaalikoneeseen asennus käy. Ilmoittautuneet saavat ohjeen ympäristön asentamisesta.

Sisältö

  • Yleiskuva
  • Hei maailma!
  • Hei Weppi
  • Käyttäjän syötteet ja lomakkeet
  • Tietokannat ja SQL
  • ORM eli automaattiset lomakkeet ja tietokannat
  • Tuotantopalvelin
  • Pilvipalvelimen vuokraaminen
  • Oma miniprojekti

Sisällössä on toteutuskohtaisia muutoksia, aikataulu kehittyy vielä toteutuksen aikana.

Arviointikriteerit

Taso 1: Opiskelija osallistuu opetukseen ja tekee tehtävät. Opiskelija pystyy esimerkeistä muokkaamalla tekemään yksinkertaisia, omia verkkopalveluita. Tietoturvan minivaatimusten noudattaminen onnistuu esimerkiksi käyttämällä hyviä salasanoja.

Taso 3: Opiskelija täyttää alempien tasojen kriteerit. Opiskelija pystyy tekemään yksinkertaisia palvelimella ajettavia weppiohjelmia, joilla on selkeä käyttötarkoitus. Ohjelmien sovittaminen onnistuu siten, että ne palvelevat luontevasti pääasiallista käyttötarkoitustaan.

Taso 5: Opiskelija täyttää alempien tasojen kriteerit. Opiskelija pystyy soveltamaan opittuja tekniikoita. Opiskelija osaa hankkia lisää tietoa eri lähteistä ja ratkaista vastaantulevia ongelmia. Sovelluksilla on ilmeinen käyttötarkoitus, jota tehdyt valinnat palvelevat. Sovellusten käyttö on helposti ymmärrettävää tai ilmeistä ilman tekijän erillistä neuvontaa. Asennukset on tehty turvallisesti, järkevästi ja ylläpidettävästi.

Palautteen hyödyntäminen

Kurssilla on hyödynnetty palautetta aiemmilta kursseiltani. "Go-ohjelmointi" on saanut huipppupalautteen 4.9/5 kiitettävä. "Go ohjelmointi" osoitti, että intensiivikurssi riittää uuteen kieleen tutustumiseen ja sen käyttöön miniprojektissa. Kurssin tekniikoita on kokeiltu alustavasti myös projektikursseilla ja kurssilla "Linux palvelimet".

Tällä kurssilla kerätään kokemuksia tuleville Python-kursseille.

Opiskelijoiden toiveiden mukaisesti teoria opetetaan tietokoneiden ääressä käytännön esimerkkien yhteydessä. Opettajakeskeinen opetus ja opiskelijoiden lyhyet tuntiharjoitukset vuorottelevat. Harrastuneisuutta tuetaan ja opiskelijoita kannustetaan taitojen välittömään kokeiluun kurssin ulkopuolella. Kurssilla syntyvien raporttien julkaisemiseen ja vapaaseen lisensointiin kannustetaan.

Palautetta, kommentteja, vanhoja arvioitavia laboratorioharjoituksia ja linkkejä kotitehtävien esimerkkiratkaisuihin mainituilta kursseilta (mm. "Go ohjelmointi", "Linux palvelimet"):

https://TeroKarvinen.com

Lisätietoja

Nimi: Python weppipalvelu - ideasta tuotantoon
Koodi: ICT8TN034-3002
Opettaja: Tero Karvinen
Ajoitus: 2022-05-23 w21 ma ... 2022-06-01 w22 ke
Ilmoittautumisaika: 2022-03-14 w11 ma 08:00
Ryhmä:
Toteutustapa: ONLINE - edellyttää 100% etäläsnäoloa.
Paikkoja: 15 - 30
Koulutusohjelma: HETI Tietojenkäsittelyn koulutusohjelma
Arviointitavat: 1-5
Opintopistemäärä: 5 op
Vastuuyksikkö: Digitalous

Kurssi kestää 8 7 arkipäivää, joka päivä 9-16. Opetukseton päivä 2022-05-26 w21 torstaina, silloin voi pitää vapaata tai treenata kotona.

Edellyttää 100% etäläsnäoloa. Kurssi päättyy kokonaan w22 keskiviikkona, sen jälkeen ei saa eikä tarvitse palauttaa mitään.

Linkkejä

Official Flask 1.0 documentation , start from QuickStart

Opinto-jakson kuvaus opinto-oppaassa

Previous instance feedback. Feedback average was excellent 4.9 out of 5.

Tämä sivu päivittyy jatkuvasti.